在以下函数中,为什么n
不等于8
?
void foo(char cvalue[8])
{
int n = sizeof (cvalue);
}
但是
n
在此版本的函数中等于8
:void bar()
{
char cvalue[8];
int n = sizeof (cvalue);
}
最佳答案
因为您不能在C中将整个数组作为函数参数传递。实际上,您正在传递指向它的指针。括号是语法糖。不能保证您要指向的数组的大小为8,因为您可以向该函数传递任何想要的字符指针。
// These all do the same thing
void foo(char cvalue[8])
void foo(char cvalue[])
void foo(char *cvalue)
关于c++ - 不同大小的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49046/