c - 8字节内存可以输入4字节吗?没有损失?

标签 c pointers

#include <stdio.h>


int main() {

char* str = "abcdefg";
}

当我编译sizeof(str)时,是4个字节,但abcdefg有8个字节,

    printf("str >> %s\n", str + 1);

这段代码已经崩溃了,这意味着str只有4个字节,

abcdefg 在哪里?

我认为,char* str 指向的是abcedfg 地址。那么,abcdefg就存在于内存中。可以?因此,

char* str 在系统中使用 4bytes + 8bytes?

最佳答案

sizeof(str) 返回指针的大小,即 4 个字节。

编辑:

实际上,指针的大小取决于您的系统。对于 32 位,它是 4。对于 64 位,它可能是 8。

关于c - 8字节内存可以输入4字节吗?没有损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858270/

相关文章:

c - 使用指针向结构成员输入值

c - 变量 ' ' 周围的堆栈在 C 中损坏

c - C语言中删除字符串中的字母

c - 将 C 中的 Ruby block 与 SWIG 结合使用

c - 了解布隆过滤器

c++ - 为什么 std::cout 可以打印一个 char[]?

c - 正在重新分配的指针未分配

c++ - 从函数内部更改函数指针的目标有什么问题吗? (C++)

c - 我正在创建一个简单的程序来计算涉及 if/else 的销售总额并不断收到错误消息

c - 我传递了一个指向该函数的指针,但没有任何内容写入其地址