程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言形參與實參的概念及swap函數,swap函數

C語言形參與實參的概念及swap函數,swap函數

編輯:關於C語言

C語言形參與實參的概念及swap函數,swap函數


形式參數(formal argument)和實際參數(actual argument)是什麼?

void function(int n); //n為形式參數
int main {   int times=5;   function(times); //times為實際參數 }  
void function(int n) {   for(int i=0;i<n;i++)   printf("hello\n"); }

 在聲明一個參數時就創建了一個叫形式參數的變量,在上面的例子中形式參數是叫做n的變量。

 函數調用function(times)把times的值5賦給了n,times被稱為實際參數,也就是說main()中的變量times的值被復制給了function()中的新變量n。

  

 在形參與實參傳遞的概念中有個很經典的例子,就是用一個函數交互兩個變量的值

 

#include <stdio.h>
void swap(int a1, int b1);

int main()
{
    int a=0,b=1;
    swap(a,b);
    printf("a=%d , b= %d",a,b);
}

void swap(int a1, int b1)    //無效的交互函數
{
    int temp=a1;
    a1=b1;
    b1=temp;
}

   初學的時候很容易寫出上面的代碼,但是沒有達到交換的目的,原因是這裡交換的只是函數中形式參數的值,實參只是把它的值復制給了形式參數,當函數作用完成後,函數中的參數也隨之銷毀了,如例子中想交換main中a,b的值,把它們的值分別復制給了swap函數中的a1,b1,然後在函數中a1和b1的值確實是交換了,但是隨之它們就銷毀了,main中的a,b的值還是原來的值。

  想要交換a,b的值,其實就是相當於要在函數中改變變量的值,要做到這一點,就需要向形式參數傳遞實際參數的地址了,因為這樣把變量的地址復制到函數中的變量裡,它們指向的是內存中的同一個地方,在函數中改變這個地方的值,那麼外部的變量的值也就改變了。

  下面的代碼可以到達交換目的

  

#include <stdio.h>
void swap(int * a1, int * b1);

int main()
{
    int a=0,b=1;
    swap(&a , &b);  //傳遞的是實參的地址
    printf("a=%d , b= %d\n",a,b);
}

void swap(int * a1, int * b1)   
{
    int temp = *a1;
    *a1 = *b1;
    *b1 = temp;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved