C語言 我使用子函式將指標變數中的指標進行交換,但是為什麼所指向的變數卻沒有變?程式如下

2021-04-02 12:48:09 字數 1103 閱讀 1755

1樓:gta小雞

c語言中的任何函式形參都是值傳遞

。所謂引用傳遞,不過是指標的值傳遞而已。

你的函式做的工作只是交換函式中的兩個臨時變數a和b的值,結果不會影響到外部的實參pa和pb。如果想要交換兩個指標的值,你的形參應該為兩個二級指標。

c語言,指標,函式 為什麼在函式中改變了指標主函式依舊不變? 書上給的看不是太懂

2樓:

c++可以通過bai

異常處理的throw和catch來實du現從子函式的

zhi子函式直接返回主函dao數,匯專編語言可以用jmp指令跳屬轉實現這個需求。c語言主要靠函式呼叫和return在函式之間切換,很難做到在多層呼叫中直接返回主函式。雖然goto語句可以無條件跳轉,但是必須在同一個函式中使用。

因此解決的方法也是用一個特殊的值作為需要返回的標誌,然後在兩層呼叫函式中都遇到該值就返回,但是這個方法也有兩個前提:1)你的兩個子函式都是由返回值的函式2)你選擇的特殊值和函式正常的返回的取值不會衝突,不會引起二義性。因此建議你的這個問題還是用c++ 的異常去解決比較好。

c語言中的指標問題,以及子函式的呼叫

3樓:匿名使用者

你的理解沒有錯,但問題在於,作為函式的引數為指標引數,也就是說作為指標型別而言,引數是按值進行傳遞,不會因為函式內部對指標進行了交換而發生改變。因此,第一個函式採用指標單元內的值進行交換,兩個指標的內部值在外部是能反映出來,第二個函式在外部是反映不出來的。

c語言中,當一個指標指向一個變數後,指標的值改變了,變數的會變嗎?如果變數的改了,指標的也會改嗎?

4樓:端武者

指標的值改了復 ==> 你是說指標裡面

制儲存的地址改了還是指標指向的資料的值改了.前者會讓指標指向另一個地址,後者會改變對應記憶體地址的值.

變數的改了 ==> 指標本來就是指向一個記憶體地址的.你指的"指標的也會改"是說指標指向的值也會改, 確實是這樣.

對指標進行解引用之後的操作相當於對變數本身進行操作,獲取值時亦然.

C語言指標函式,c語言中指標怎麼使用?

應該是的,還可以用f a i 的形式。去程式設計嗎?我學這些的是一頭霧水。c語言中指標怎麼使用?1 使用場景 使用指標時,必須將它指向一個變數的地址或者為它分配 空間方能使用,如下所示 include include int main int argc,char const argv int b,d...

c語言指標和函式的問題,C語言指標和函式的問題。!

樓主你好。include int main printf 修改前,陣列元素的值 段1 print array a,5 printf 修改後,陣列元素的值 段2 change values a,5,3 print array a,5 return 0 函式功能 修改一位陣列元素的值,規則是 新值 原值...

C語言中的指標是個什麼型別的變數

1.指標的型別 就是 指標 指標大小和記憶體的編址方式有關,只是恰好與無符號整形大小相同他的大小是 4位元組 32位 就是類似 0012ff78 16進位制 32位 注 如果你的電腦是64位電腦 那麼他的大小就是8位元組 2.指標是用來儲存 記憶體地址的 記憶體有 按32位編制 和按64位編制之分 ...