C語言中的值傳遞與址傳遞和引用傳遞

2021-07-15 22:21:27 字數 665 閱讀 6012

c語言中的值傳遞與址傳遞

在剛接觸c語言的學習過程中,很多小白都會在函式引數傳遞上被難住,由於我也是小白,所以我也不例外。之前在做oj的時候遇到一題,掛在了自定義的函式引數傳遞的問題上。

下面先放兩個簡單的例子。函式swap用來交換兩個數的值。

#include

void swap(int m,int n)

int main()

顯然,單純的值傳遞並不會交換兩個數的值,下面再看另乙個引用傳遞。

#include

void swap(int &m,int &n)

int main()

修改之前的語句:

void swap(int m,int n)

修改之後的語句:

void swap(int &m,int &n)

修改之前的語句是值傳遞,雖然傳遞了引數,但是變數本身的值並沒有做交換,實際引數m和n在傳入函式之前還複製了裡面的內容,並把內容交給乙個臨時的記憶體,然後在內部執行交換操作後,只是臨時記憶體m和n做了交換,可見值傳遞只是傳遞了實參中的值,在函式內部也無法修改外部的實際引數。

而引用傳遞則是用傳遞的引數去修改原來的資料,原來的資料是可以被修改的,所以才可以將原來的兩個資料交換。

C語言 值傳遞與址傳遞

一 三道考題 1.考題一 程式 如下 void exchg1 int x,int y void main 輸出的結果 x y a b 問下劃線的部分應是什麼,請完成。2.考題二 如下 exchg2 int px,int py main 輸出的結果為 px py a b 問下劃線的部分應是什麼,請完成...

值傳遞 和址傳遞

c 關於引數按值傳遞和按址傳遞的,swap為乙個交換函式 交換2個數的值,通常交換值的時候會用到臨時變數,本例中直接通過原有變數進行操作實現了變數的值的交換 code class program b a,b 值傳遞 void swap int a,int b b a,b static void ma...

解讀GO語言中的值傳遞和引用傳遞

以下內容大部分來自許世偉 go語言程式設計 在此只是為了做乙個筆記,方便日後 遺忘時容易找到 複習的資料 go語言中絕大部分型別都是基於值語義 值傳遞 包括 基本型別 如byte int bool float32 float64和string等 複雜型別 如陣列 array 結構體 struct 指...