void func(char str1[8])
{
const char* str2 = "hello";
char str3[] = "he";
printf("%d,%d,%d,%d", sizeof(str1), sizeof(str2), sizeof(str3), sizeof("hello"));
}
数组在作为函数参数传递过程中,会退化成指针。这也是为什么指针作为参数传递时,经常要一个长度。
但是在sizeof(str3)中,str3表示的含义是str3[],因此返回整个数组的大小(这个大小在之前的数组定义中已经确定了);
注意,地址常量绝不是指针,类型不同!虽然在函数的参数传递过程中,地址常量可以退化成对应的指针。这里显然由于这个错误理解导致对数组的sizeof()结果判断有误。)