数组的sizeof减少 - 为什么

时间:2012-07-24 17:21:00

标签: c

  

可能重复:
  Why sizeof(param_array) is the size of pointer?

 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.会发生什么?

1 个答案:

答案 0 :(得分:3)

因为你在函数中没有真正的数组;它已降级为指针,大小未知。您要求sizeof一个char*,在您的平台上,这是4个字节。