C語言基礎知識 C語言函式呼叫怎麼返回兩個值

2021-08-21 13:10:59 字數 731 閱讀 7619

在c語言中,函式只能返回乙個值,要返回兩個值,可以改換思路,通過其它方式做到。

在要返回的兩個值型別相同時,可以用建立陣列的方式,將要返回的值存在陣列中,並返回陣列首位址,這樣就可以實現返回兩個值的效果。

需要注意的是,要返回陣列首位址,那麼返回的值不可以是區域性變數,有如下幾種是可以的:

a) 使用靜態區域性變數儲存,並返回位址;

b) 使用全域性變數儲存,返回位址;

c) 函式中動態分配記憶體,並返回申請到的位址,此種方法需要注意,在使用後需要釋放;

d) 在引數中傳入陣列位址,並返回。即返回的實際上是主調函式中的變數位址。

將需要返回的值,寫成結構體形式,並返回結構體變數或返回結構體指標,這樣可以實現乙個返回值中含有多組資料。

比如,需要返回兩個char型資料時,可以通過返回乙個short資料,高地位分別儲存各自的值。

還可以不使用返回值的方式,而是通過函式引數傳值,如使用輸出型引數,舉個例子:對於strcpy函式原型:

char *strcpy(char *strdest,const char *strsrc)

解析:strdest為輸出型引數。

輸出型引數與輸入形引數解析:一般不帶const的是輸出型引數,使用const修飾的是輸入形引數,如strsrc

C語言基礎知識之函式

函式分類 1.庫函式 使用者定義函式 2.有返回值函式 無返回值函式 3.無參函式 有參函式 c程式的執行總是從main函式開始,完成對其它函式的呼叫再返回到main函式中,最後由main函式結束整個程式。其他函式定義的位置任意。函式定義的一般格式 儲存型別 資料型別 函式名 形參定義表 例 求兩數...

C語言基礎知識

1 的問題。int i 1 int j 2 int k i j printf d k 輸出k為3。編譯原理有關編譯器在詞法解析的時候,對於運算子,總是查詢最大的匹配也就是說,i j,編譯器在找到 的時候,它不立即理解為 而是繼續下乙個字元,下乙個字元仍然是 可以組成 再往下的話便是 不成立了。所以i...

C語言基礎知識

一 位元組對齊 位元組對齊的原因,是機器在訪問記憶體中儲存的資料的高效性。通常機器是機器位數為自然邊界來訪問記憶體的,如果乙個4位元組整形數,所在的記憶體不在虛擬記憶體的自然邊界。則cpu需要讀多於一次的資料,這樣就降低了效率。所以,簡單地說,就是保證cpu指令在訪問資料的時候,能一次讀取,而不需要...