c語言中函數調用的三種方式是:1、傳值調用,就是把一個變數的值傳遞給函數的形式參數;2、引用調用,就是將變數的位址直接傳入函數;3、傳地址調用,就是透過指標來實現的,把變數的引用傳入函數。
本文操作環境: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語言教學】
解析:
沒有交互成功原因是:使用傳值調用,只在形參上改變了數值,沒有在實參上改變數值。
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; }
執行:
#解析:
互動成功的原因是:使用傳送位址調用,利用指針改變了原來的位址,所以實參就交換了。
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; }
執行:
#解析:
互動成功的原因是:使用引用調用,引用是直接改變兩個實參變數a,b的值,所以就交換了。
以上是c語言函數呼叫的三種方式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!