
求助
關于C語言中陣列作為函式引數的問題:
如圖,在函式fun中列印出的陣列arr地址,為什么和在main中列印的陣列地址不同?
代碼如下:
#include <stdio.h>
void fun(int arr[],int len)
{
arr[0] = 2;
printf("addr_in_fun:%p\n",&arr);
}
int main()
{
int arr[2]={0};
fun(arr,2);
printf("%d\n",arr[0]);
printf("addr_in_main:%p\n",&arr);
printf("addr_0:%p",&arr[0]);
return 0;
}
謝謝大家~
uj5u.com熱心網友回復:
你把arr前面的&去掉就一樣了uj5u.com熱心網友回復:
陣列傳入函式后退化為指標,arr進入了fun 就變成int×所以&arr其實是int** 和 arr 不是一個東西,地址自然不一樣
uj5u.com熱心網友回復:
每次函式呼叫時,都會重新創建該函式的所有形參,此時所傳遞的實參將會初始化對應的形參。請參考《C++中函式的陣列形參》
希望能夠幫到你
uj5u.com熱心網友回復:
謝謝
請問為什么在main函式中,
printf("addr_in_main:%p\n",&arr);列印的卻是arr[0]的地址?
uj5u.com熱心網友回復:
因為在主函式里他是陣列轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/97334.html
標籤:新手樂園
上一篇:c++
下一篇:執行一段資料
