C語言位址傳遞和值傳遞簡析

2022-08-25 20:36:20 字數 725 閱讀 5091

c語言沒用引用傳遞,想用&引用傳遞,把。c改成。cpp,就能編譯通過。 若引數傳遞的是簡單資料型別的數值,則將其歸類為值傳遞方式;若引數傳遞的是變數的位址,則視其為位址傳遞方式。 值傳遞過程中,被調函式的形參作為被調函式的區域性變數處理,即在記憶體的堆疊中開闢空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個拷貝。值傳遞的特點是被調函式對形參的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值。 而在位址傳遞過程中,被調函式的形參雖然也作為區域性變數在堆疊中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的位址。被調函式對形參的任何操作都被處理成間接定址,即通過堆疊中存放的位址訪問主調函式中的實參變數。正因為如此,被調函式對形參做的任何操作都影響了主調函式中的實參變數。 下面我們用書上出現頻率最高的乙個程式來分別實現值傳遞過程和位址傳遞過程。

void swap(int x,int y) void main() main() void main() { int a,b; int *pointer_1=&a,*pointer_2=& scanf("%d,%d",&a,&b);

if(aprintf("\n%d,%d\n",a,b);

假設我們從鍵盤輸入兩個資料:5,9,先來看一下執行結果: 9,5 在這個程式中用指標變數作引數,雖然傳送的是變數的位址,但實參和形參之間的資料傳遞依然是單向的「值傳遞」,即呼叫函式不可能改變實參指標變數的值。但它不同於一般值傳遞的是,它可以通過指標間接訪問的特點來改變指標變數所指變數的值,即最終達到了改變實參的目的。

C語言位址傳遞和值傳遞簡析

不少同學在學到c語言的指標部分時感到很困惑,對經常提到的 值傳遞 和 位址傳遞 兩個概念弄不明白。實際上,因為位址本身也可以作為乙個特殊的 值 所以位址傳遞也是一種特殊的值傳遞。只是為了強調其特殊性,故稱之為 位址傳遞 我們在學習過程中可以視引數的形式而區別對待,比如若引數傳遞的是簡單資料型別的數值...

C語言 值傳遞 位址傳遞

1.值傳遞 void exchg1 int x,int y main 呼叫exchg1 a,b 有乙個隱含的操作就是int x a int y b 然後函式內部把形參x和y的值對換。所以a和b的值各自不變。2.位址傳遞 void exchg2 int px,int py main 同樣的,呼叫exc...

C語言 關於值傳遞和位址傳遞

初學者在學習c語言時候乙個極容易迷惑的地方就在函式的 值傳遞 和 位址傳遞 了,出現這個迷惑的原因有些教材沒有把記憶體圖畫出來,只是簡單的舉了幾個例子,結果初學者按照例子寫寫 倒是能執行出來,但始終沒明白到底是怎麼回事,下面我通過例子和畫圖來相信說明裡面的細節問題。在開始之前有乙個前提,你一定要粗略...