php调用c 的三种方式,c语言函数调用的三种方式是什么

在C语言中函数调用的三种方式分别是:传值调用,引用调用和传地址调用。【视频教程推荐:C语言教程】

cb10a250f9c19845472c7f70118f7732.png

1、传值调用

传值调用,就是把一个变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,形参运算后在把值返回。

函数中改变的值是不能影响到外界的,因而在函数里对形参的改变不会影响到函数外的变量的值。

下面通过代码示例来理解一下:#include

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;

}

运行:

7cb001bd5e993f55624999a71e41427a.png

解析:

没有交互成功原因是:使用传值调用,只在形参上改变了数值,没有在实参上改变数值。

2、传地址调用

传地址调用,就是将变量的地址直接传入函数,它把一个变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。

下面通过代码示例来理解一下:#include

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;

}

运行:

c82f5d944c123882511f529ff3adb114.png

解析:

交互成功的原因是:使用传地址调用,利用指针改变了原来的地址,所以实参就交换了。

3、引用调用

引用调用实际是通过指针来实现的,把变量的引用传入函数;能达到使用地址调用的效果,可是使用方式如传值调用,函数可以对其值进行修改。

下面通过代码示例来理解一下:#include

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;

}

运行:

e7adb4a9676e33b7036a102073d967c8.png

解析:

交互成功的原因是:使用引用调用,引用是直接改变两个实参变量a,b的值,所以就交换了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值