#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
相关分类