1. 程式人生 > >函式返回多個值,傳入引數和傳出引數

函式返回多個值,傳入引數和傳出引數

 函式包括了除函式名以外還有返回值和形參。
  這個形參包括了傳入引數和傳出引數;
  傳入引數:就是數值的傳遞。在函式中不會修改這個引數,不會修改呼叫這個函式的函式的值。
  例如
  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.返回一個結構體。