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

関数には実際には配列がないためです。ポインターに劣化しており、サイズは不明です。あなたのプラットフォームでは 4 バイトであるsizeofaを求めています。char*

于 2012-07-24T17:22:55.957 に答える