#include <string.h> #include <stdio.h> int main() { char *s1 = "abcdef"; char s2[] = { "abcdef" }; char *s3[] = { "abcdef" }; printf("%d\n%d\n%d\n", sizeof(s1), sizeof(*s1), sizeof(s2)); printf("**********\n"); printf("%d\n%d\n", sizeof(s3), sizeof(*s3)); return 0; } /* 输出: 4 1 7 ********** 4 4 */
前面我都理解,sizeof(s1)是指针变量 所占内存 4个字节,sizeof(*s1)是指针指的第一个字符串常量所占字节char类型占1个字节,sizeof(s2)是char型数组s2分配的内存7个字节,sizeof(s3)同理,指针变量4个字节,就这个 sizeof(*s3)为什么是4。。 不是很懂。。饶糊涂了。
onemoo
linuxnewbie
相关分类