首頁  >  文章  >  後端開發  >  c語言函數呼叫的三種方式是什麼

c語言函數呼叫的三種方式是什麼

青灯夜游
青灯夜游原創
2019-03-01 13:54:4556176瀏覽

c語言中函數調用的三種方式是:1、傳值調用,就是把一個變數的值傳遞給函數的形式參數;2、引用調用,就是將變數的位址直接傳入函數;3、傳地址調用,就是透過指標來實現的,把變數的引用傳入函數。

c語言函數呼叫的三種方式是什麼

本文操作環境:Windows7系統、C11版、Dell G3電腦。

在C語言中函數調用的三種方式分別是:傳值調用,引用調用和傳送地址調用。

1、傳值調用

傳值調用,就是把一個變數的值傳遞給函數的形式參數,實際上是用變數的值來新產生一個形式參數,形參運算後在把值回傳。

函數中改變的值是不能影響到外界的,因而在函數裡對形參的改變不會影響到函數外的變數的值。

下面透過程式碼範例來理解:

#include<stdio.h>  
void myswap(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(a,b);  //作为对比,直接交换两个整数,显然不行  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}

運行:

c語言函數呼叫的三種方式是什麼

【影片教學推薦:C語言教學

解析:

沒有交互成功原因是:使用傳值調用,只在形參上改變了數值,沒有在實參上改變數值。

2、傳位址呼叫

傳送位址調用,就是將變數的位址直接傳入函數,它把一個變數的位址賦給函數裡形式參數的指針,使指針指向真實的變數的位址,因為指標所指位址的內容的改變能反映到函數外,也就是能改變函數外的變數的值。

下面透過程式碼範例來理解:

#include<stdio.h>  
void myswap(int *p1, int *p2)  
{  
    int  t;  
    t=*p1;  
    *p1=*p2;  
    *p2=t;  
}  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(&a,&b);  //交换两个整数的地址  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}

執行:

c語言函數呼叫的三種方式是什麼

#解析:

互動成功的原因是:使用傳送位址調用,利用指針改變了原來的位址,所以實參就交換了。

3、引用呼叫

引用呼叫實際上是透過指標來實現的,把變數的引用傳入函數;能達到使用位址調用的效果,可是使用方式如傳值調用,函數可以對其值進行修改。

下面透過程式碼範例來理解:

#include<stdio.h>
void myswap(int &x, int &y)
{
    int t;
    t=x;
    x=y;
    y=t;
}
  
int main()
{  
    int a, b;
    printf("请输入待交换的两个整数:");
    scanf("%d %d", &a, &b);
    myswap(a,b);  //注意:这里调用方式与传值调用一样,直接以变量a和b作为实参交换
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}

執行:

c語言函數呼叫的三種方式是什麼

#解析:

互動成功的原因是:使用引用調用,引用是直接改變兩個實參變數a,b的值,所以就交換了。

以上是c語言函數呼叫的三種方式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn