代码如下:
#include <stdio.h>
int main(int argc, char *argv[]) {
char str1[] = "gaga";
char *str2 = "gaga";
printf("str1:%d\nstr2:%d\n",
sizeof(str1),
sizeof(str2));
return 0;
}
运行结果:
str1:5
str2:4
看Learn c the hard way时提到定义上述两种方法都可以定义字符串。不过这里看出结果是不一样的。两个变量的大小不同,str2是一个char*没错吧。。。str1是个字符数组,不是说数组名本身就是指向第一个元素的指针么?应该和str2类型相同吧?为什么是这个结果,求解。
ok...又是一次自问自答...我错了。。。 看到了第15章讲指针,解答了这个问题。“数组名是指向第一个元素的指针”这个说法是错的。亏我上课听那么认真。。老师居然就这样敷衍过去了。。。
Learn c the hard way 第15章的链接