在以下函数中,为什么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/

10-11 01:53