关于sizeof(char *)和sizeof(char [])

时间:2013-05-17 12:56:06

标签: c arrays pointers char sizeof

char *str1 = "pupupupu";
char str2[] = "pupupupu";

printf("%s\t%d\n", str1, (int)sizeof(str1));
printf("%s\t%d\n", str2, (int)sizeof(str2));

输出:

pupupupu    8
pupupupu    9

我的问题:为什么两种输出尺寸不同?

1 个答案:

答案 0 :(得分:2)

sizeof(str1)是char指针的大小,而sizeof(str2)给出的数组大小为字符串长度(pupupupu)+ 1

请阅读我的回答,它不完全相同,但对您有所帮助:What does sizeof(&arr) returns?