C語言 以指標作為實參的問題

2021-10-10 09:53:18 字數 403 閱讀 9000

以指標作為實參時,實參p傳遞給形參p1的其實是p的拷貝,所以在區域性函式中改變形參p1的指向對身處主函式的p是無影響的,但是因為p1是p的拷貝。

所以他們的指向是相同的,所以可以通過p1修改了那塊記憶體的值。如果實參p的指向為空,也就是說p是乙個空指標的話,那麼它就沒有指向某塊記憶體。

形參也就無法操作p所指向的記憶體了(因為p本就沒有指向任何一塊記憶體),即使p1在區域性函式中指向了乙個malloc的空間。

這其實是改變了p1的指向(從null到指向malloc的空間),但是如前所述,p1只是p的拷貝,改變副本的指向對本尊是沒有任何影響的。

所以對p沒有影響,p還是為空。但是因為p1的生存週期是在區域性函式範圍內,所以一旦函式執行結束,p1這個變數就會被銷毀釋放。

但是那塊malloc的空間卻不會被釋放,那就會成為空間碎片。

以指標作為實參的問題

以指標作為實參時,實參p傳遞給形參p1的其實是p的拷貝,所以在區域性函式中改變形參p1的指向對身處主函式的p是無影響的,但是因為p1是p的拷貝,所以他們的指向是相同的,所以可以通過p1修改了那塊記憶體的值。如果實參p的指向為空,也就是說p是乙個空指標的話,那麼它就沒有指向某塊記憶體,形參也就無法操作...

c語言基礎 3 陣列和指標作為實參和形參的問題

字串 char a abc printf s a fgets a,100,stdin 安全的字串輸入函式 printf s a scanf n 兩個scanf清空輸入快取 scanf c int 值作為實參 指標作為形參 void xchange1 int n1,int n2 形參 int num1...

c語言指標作為函式的引數

在c語言中實參和形參之間的資料傳輸是單向的 值傳遞 方式,也就是實參可以影響形參,而形參不能影響實參。指標變數作為引數也不例外,但是可以改變實參指標變數所指向的變數的值。include void swap1 int x,int y swap2 int px,int py swap3 int px,i...