c语言函数调用的三种方式是什么
本文操作環(huán)境:Windows7系統(tǒng)、C11版、Dell G3電腦。
在C語(yǔ)言中函數(shù)調(diào)用的三種方式分別是:傳值調(diào)用,引用調(diào)用和傳地址調(diào)用。
1、傳值調(diào)用
傳值調(diào)用,就是把一個(gè)變量的值傳遞給函數(shù)的形式參數(shù),實(shí)際就是用變量的值來(lái)新生成一個(gè)形式參數(shù),形參運(yùn)算后在把值返回。
函數(shù)中改變的值是不能影響到外界的,因而在函數(shù)里對(duì)形參的改變不會(huì)影響到函數(shù)外的變量的值。
下面通過(guò)代碼示例來(lái)理解一下:
#include<stdio.h>
void myswap(int x, int y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
printf("請(qǐng)輸入待交換的兩個(gè)整數(shù):");
scanf("%d %d", &a, &b);
myswap(a,b); //作為對(duì)比,直接交換兩個(gè)整數(shù),顯然不行
printf("調(diào)用交換函數(shù)后的結(jié)果是:%d 和 %d\n", a, b);
return 0;
}
登錄后復(fù)制
運(yùn)行:
【視頻教程推薦:C語(yǔ)言教程】
解析:
沒(méi)有交互成功原因是:使用傳值調(diào)用,只在形參上改變了數(shù)值,沒(méi)有在實(shí)參上改變數(shù)值。
2、傳地址調(diào)用
傳地址調(diào)用,就是將變量的地址直接傳入函數(shù),它把一個(gè)變量的地址賦給函數(shù)里形式參數(shù)的指針,使指針指向真實(shí)的變量的地址,因?yàn)閷?duì)指針?biāo)傅刂返膬?nèi)容的改變能反映到函數(shù)外,也就是能改變函數(shù)外的變量的值。
下面通過(guò)代碼示例來(lái)理解一下:
#include<stdio.h>
void myswap(int *p1, int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a, b;
printf("請(qǐng)輸入待交換的兩個(gè)整數(shù):");
scanf("%d %d", &a, &b);
myswap(&a,&b); //交換兩個(gè)整數(shù)的地址
printf("調(diào)用交換函數(shù)后的結(jié)果是:%d 和 %d\n", a, b);
return 0;
}
登錄后復(fù)制
運(yùn)行:
解析:
交互成功的原因是:使用傳地址調(diào)用,利用指針改變了原來(lái)的地址,所以實(shí)參就交換了。
3、引用調(diào)用
引用調(diào)用實(shí)際是通過(guò)指針來(lái)實(shí)現(xiàn)的,把變量的引用傳入函數(shù);能達(dá)到使用地址調(diào)用的效果,可是使用方式如傳值調(diào)用,函數(shù)可以對(duì)其值進(jìn)行修改。
下面通過(guò)代碼示例來(lái)理解一下:
#include<stdio.h>
void myswap(int &x, int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
printf("請(qǐng)輸入待交換的兩個(gè)整數(shù):");
scanf("%d %d", &a, &b);
myswap(a,b); //注意:這里調(diào)用方式與傳值調(diào)用一樣,直接以變量a和b作為實(shí)參交換
printf("調(diào)用交換函數(shù)后的結(jié)果是:%d 和 %d\n", a, b);
return 0;
}
登錄后復(fù)制
運(yùn)行:
解析:
交互成功的原因是:使用引用調(diào)用,引用是直接改變兩個(gè)實(shí)參變量a,b的值,所以就交換了。
以上就是c語(yǔ)言函數(shù)調(diào)用的三種方式是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的c语言函数调用的三种方式是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 上古卷轴5莱迪亚不见了怎么找
- 下一篇: \Grokking Algorithms