在C語言中,函式只能返回一個值,要返回兩個值,可以改換思路,透過其它方式做到。
1 建立陣列,返回指標。 在要返回的兩個值型別相同時,可以用建立陣列的方式,將要返回的值存在陣列中,並返回陣列首地址,這樣就可以實現返回兩個值的效果。 需要注意的是,要返回陣列首地址,那麼返回的值不可以是區域性變數,有如下幾種是可以的: a) 使用靜態區域性變數儲存,並返回地址; b) 使用全域性變數儲存,返回地址; c) 函式中動態分配記憶體,並返回申請到的地址,此種方法需要注意,在使用後需要釋放; d) 在引數中傳入陣列地址,並返回。即返回的實際上是主調函式中的變數地址。
2 建立結構體,返回結構體變數。 將需要返回的值,寫成結構體形式,並返回結構體變數,這樣可以實現一個返回值中含有多組資料。
3 當資料規模較小時,可以採用將小規模資料合併為大規模資料的方式,進行返回。 比如,需要返回兩個char型資料時,可以透過返回一個short資料,高地位分別儲存各自的值。 除以上方法外,還可以不使用返回值的方式,而是透過函式引數傳值,或者全域性變數傳值等方式,將要返回的值回傳給主調函式。
在C語言中,函式只能返回一個值,要返回兩個值,可以改換思路,透過其它方式做到。
1 建立陣列,返回指標。 在要返回的兩個值型別相同時,可以用建立陣列的方式,將要返回的值存在陣列中,並返回陣列首地址,這樣就可以實現返回兩個值的效果。 需要注意的是,要返回陣列首地址,那麼返回的值不可以是區域性變數,有如下幾種是可以的: a) 使用靜態區域性變數儲存,並返回地址; b) 使用全域性變數儲存,返回地址; c) 函式中動態分配記憶體,並返回申請到的地址,此種方法需要注意,在使用後需要釋放; d) 在引數中傳入陣列地址,並返回。即返回的實際上是主調函式中的變數地址。
2 建立結構體,返回結構體變數。 將需要返回的值,寫成結構體形式,並返回結構體變數,這樣可以實現一個返回值中含有多組資料。
3 當資料規模較小時,可以採用將小規模資料合併為大規模資料的方式,進行返回。 比如,需要返回兩個char型資料時,可以透過返回一個short資料,高地位分別儲存各自的值。 除以上方法外,還可以不使用返回值的方式,而是透過函式引數傳值,或者全域性變數傳值等方式,將要返回的值回傳給主調函式。