c語言中用於交換值函式問題,C語言中呼叫函式交換兩個變數的值需要傳遞地址,為什麼相加就可以直接用

2021-05-04 18:29:02 字數 1043 閱讀 8115

1樓:

因為void gsd(int a,int b)中的a和b在呼叫時用實參的值進行拷貝,在函式中交換的只是拷貝過來的副本,所以原來的實參值並沒有發生交換操作。而在void gsd(int &a,int &b)中int &型別使a和b的性質發生了變數,它們是「引用變數」,呼叫時它們就成了實參的「別名」——就是說在函式中操作的是實參本身,所以結果實參發生了交換變化——int &等型別是c++引入的新型別,c是沒有的。要搞清楚的是int &是「整型引用」,並不是指標;整型指標是int *。

建議你不要用「鄙視」這樣的字眼,誰答得不好你大可不理會;這裡沒有什麼都明白的人,都明白的人不到這裡來!不明白可續問……

2樓:守望中的守護

首先回答你第二三個問題:在函式引數中使用&在c語言中是不存在的,你這使用了(當然你可能不知道)c++中引用的概念,簡單說就是你把兩個變數直接弄過去了而不是在傳它們的地址當然可行,把變數4和5直接傳過去理所當然是正確的。這樣也回答了你第三問。

第一個問題我不太清楚你想幹什麼,如果在主函式中定義變數a,b而你希望在gsd中交換,但是你傳過去的a和b是在呼叫函式時創立的臨時變數!它們與主函式中的a,b是不同的,你在gsd中交換了臨時變數的值,一旦其執行完兩個臨時變數便被析構掉了而主函式中ab沒有變化

c語言中呼叫函式交換兩個變數的值需要傳遞地址,為什麼相加就可以直接用

3樓:知e自動化

舉個栗子:

有100個房間,從0到99編號,每個房間放在不同的食材。

交換兩個變數的值

只需要告訴你把a房間和b房間的東西調換,你不需要知道房間裡面放的是什麼。只需要知道ab的房間號;

加法:如果問你a房間和b房間裡的食材可以做什麼菜,你就需要知道ab房間分別放了什麼。不需要知道房間號。

c語言中定義一個函式交換兩個數的值?

4樓:匿名使用者

#include

void swap1(int* a, int* b)

main()

C語言中函式呼叫問題,C語言中函式的呼叫

首先我們來說一下,你這個程式是有很大的問題的。函式有且只有唯一一個返回值,當程式執行到return的時候,這個函式就結束並返回了。所以,你這裡寫2個return來返回最大值和最小值是不可能的。再者,如果你想使用返回值作為最大值,最小值的傳遞,那麼在main函式中,你呼叫star函式的時候需要一個變數...

c語言中public 函式使用,c語言中public 是什麼意思啊?

c 中是有public的函式,可以在外面進行呼叫的。c語言中public 是什麼意思啊?public 定義一個全域性變數。全域性變數是程式設計術語中的一種,源自於變數之分。變數分為區域性與全域性,區域性變數又可稱之為內部變數。由某物件或某個函式所建立的變數通常都是區域性變數,只能被內部引用,而無法被...

C語言中memcpy函式用法,求助,C語言中函式memset ,memcpy 和strchr 的功能和用法

visual c 把memcpy和memmove實現的一樣,即不用擔心覆蓋的問題,這個可以看vc安裝目錄裡的crt原始碼得知。至於gcc,沒有看過glibc的原始碼。求助,c語言中函式memset memcpy 和strchr 的功能和用法?memset函式用來對一段記憶體空間全部設定為某個字元,常...