无意中看到sizeof()对数组的使用,才知道自己一直忽略了一点:
char *str1 = "1234";
int n1 = sizeof(str1); // n1值为4,返回的是str1指向的内存空间的长度
char str2[] = "1234";
int n2 = sizeof(str2);//n2值为5,返回(数组元素的个数*类型的长度), 最后有个空字符,所以是5*1
而当数组作为参数时,情况又不一样了
char str3[1234];
int Func(char *str)
{
return sizeof(str);
}
main()
{
int n = Func(str3)//n的值为1,这是因为传递过来的是指针,计算的是指针所属类型的长度
}