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的值,所以就交换了。
原文地址:https://www.jb51.cc/csharp/1193300.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。