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 的值和地址指向同一个地址,但是当将值和地址传递到两个不同的地址时?