void pass_arr(int arr[]);
void pass_arr_test()
{
int arr[5] = {1,2,3,4,5};
printf( "arr = %p\n"
"&arr = %p\n\n", arr, &arr);
pass_arr(arr);
}
void pass_arr(int arr[])
{
printf( "passed arr = %p\n"
"passed &arr = %p\n\n", arr, &arr);
}
出力:
arr = 0x28ccd0
&arr = 0x28ccd0
合格 arr = 0x28ccd0
合格 &arr = 0x28ccc0
arr が作成されたブロックで評価されたときに arr の値とアドレスが同じアドレスを指しているのに、渡されたときに値とアドレスが2つの異なるアドレスを指している理由を誰かが説明できますか?