0

可能重复:
为什么 sizeof(param_array) 是指针的大小?

 void print(char arr[]){
  int i;
  printf("%d" , sizeof(arr));  /*print 4**/

}

int main()
{

  char arr[]={0,1,2,3,4};
  printf("%d" , sizeof(arr)); /*print 5**/
  print(arr);
}

当我将数组发送到函数时,大小似乎减少了 1。会发生什么?

4

1 回答 1

3

因为你在函数中并没有真正的数组;它已退化为指针,大小未知。您要求sizeofachar*在您的平台上是 4 个字节。

于 2012-07-24T17:22:55.957 回答