函式返回多個值,傳入引數和傳出引數
函式包括了除函式名以外還有返回值和形參。
這個形參包括了傳入引數和傳出引數;
傳入引數:就是數值的傳遞。在函式中不會修改這個引數,不會修改呼叫這個函式的函式的值。
例如
void exchange(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main ()
{
int a =4;
int b = 5;
exchange(a,b);
printf("a = %d\n b = %d\n",a,b);
return 0;
}
輸出的結果是
a = 4;
b = 5;
這是傳參,僅僅是一個數值的傳遞。
在呼叫exchange函式的時候,空間也分配了另一個a,b變數名的空間,在exchange在呼叫完的時候,空間釋放。
exchange函式裡面的a,b和主函式裡面的啊a,b的空間是不一樣的。僅僅是名字一樣而已。
例子:這個村子你叫張三,隔壁的村子也有一個叫張三。有一天隔壁的張三家裡面有喜事,而不是你家有喜事。
根本就是兩碼事。
傳出引數,一般傳遞的是地址。
例如上面這個例子,怎麼講a,b在exchange裡面改變呢。
void exchange(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
這時候傳遞的變數的地址。在函式呼叫的時候也是建立顯得空間,只不過這片空間記載的是實參的地址。
正真在執行的時候通過地址找到實參的空間,將裡面的數值改變。
還是上面張三為例。有喜事那家發出請柬,標明哪個村的張三家。那麼去赴宴的人,按照家的地址去赴宴。
在需要改變指標變數的時候,需要傳入的是指標的指標,也就是指標變數那片空間的地址。
一個函式如何返回多個值:
1.就是利用傳出引數,來記載返回值。
2.返回一個數組。
3.返回一個結構體。