#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?
答案 0 :(得分:3)
sizeof(str)
返回指针的大小,即4个字节。
修改强>:
实际上,指针的大小取决于您的系统。对于32位,它是4.对于64位,它可能是8。
答案 1 :(得分:2)
将字符串文字分配给char
指针时,sizeof
会产生系统上指针的大小。如果您想知道字符串文字占用多少内存,请将其分配给char
数组:
char str[] = "abcdefg";
printf("%zu\n", sizeof(str));
这会产生8
,如预期的那样(demo)。