C语言的3种参数传递方式
来源:互联网 发布:twrp备份文件提取数据 编辑:程序博客网 时间:2024/05/22 02:06
参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程,方法有3种方式
- 值传递
- 地址传递
- 引用传递
tips:
- 被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放
- 值传递和地址传递,传递的都是实参的一个拷贝
- C语言中实参和形参之间的数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不行
- 输出格式并没有选择%p而是选择了%d,因为十进制的数看起来更直观
值传递
- 如果只是传递值的话:
#include <stdio.h> //值传递传值void swap( int x, int y);int main(){ int a=2,b=3; printf("before:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); swap(a,b); printf("after:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); return 0;}void swap(int x,int y){ int tmp; tmp=x; x=y; y=tmp; printf("inside:形参为x,y\nx=%d,地址为%d\ny=%d,地址为%d\n\n",x,&x,y,&y);}
执行结果:
- 如果传递的是地址呢?
#include <stdio.h> //值传递传地址void swap( int *x, int *y);int main(){ int a=2,b=3; printf("before:实参为&a,&b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); swap(&a,&b); printf("after:实参为&a,&b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); return 0;}void swap(int *x,int *y){ int *tmp= NULL; tmp=x; x=y; y=tmp; printf("inside:形参为*x,*y\n*x=%d,x=%d,地址为%d\n*y=%d,y=%d,地址为%d\n\n",*x,x,&x,*y,y,&y);}
执行结果:
地址传递
#include <stdio.h> //地址传递void swap( int *x, int *y);int main(){ int a=2,b=3; printf("before:实参为&a,&b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); swap(&a,&b); printf("after:实参为&a,&b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); return 0;}void swap(int *x,int *y){ int tmp; tmp=*x; *x=*y; *y=tmp; printf("inside:形参为*x,*y\n*x=%d,x=%d,地址为%d\n*y=%d,y=%d,地址为%d\n\n",*x,x,&x,*y,y,&y);}
执行结果为:
引用传递
#include <stdio.h> //引用传递void swap( int &x, int &y);int main(){ int a=2,b=3; printf("before:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); swap(a,b); printf("after:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b); return 0;}void swap(int &x,int &y){ int tmp; tmp=x; x=y; y=tmp; printf("inside:形参为&x,&y\nx=%d,地址为%d\ny=%d,地址为%d\n\n",x,&x,y,&y);}
执行结果为:
补充
int x=1;int *y=&x; //用于指针传递,y有自己独立的内存地址,存储的内容是x的地址,*y是x的值int &z=x; //用于引用传递,可以理解为z就是x,x就是z,只不过名字不一样
阅读全文
0 0
- C语言的3种参数传递方式
- C语言的参数传递方式
- C语言中参数的传递方式
- C语言中函数参数传递的三种方式
- C语言中函数参数传递的三种方式
- C语言:函数参数传递的三种方式
- C语言中函数参数传递的三种方式
- C语言三种参数传递方式
- c语言参数传递方式
- C语言函数参数的传递方式[原]
- c语言指针类型参数的传递方式
- C语言中函数参数传递的方式。
- C语言函数的参数及传递方式
- [C]C语言中函数参数传递的三种方式(x,*x,&x)
- 第二周项目1—C++/C语言中函数参数传递的三种方式
- C/C++参数传递的3种方式
- C语言的参数传递
- C语言的参数传递
- SQL SERVER 包含固定符号的字符串 转为一列
- 小结
- GraphX编译记录
- 左连结
- C# 中颜色和名称样式对照表
- C语言的3种参数传递方式
- 29
- 【cc3200】Wuart
- 五分钟读懂UML类图
- 值得推荐的C/C++框架和库
- Android 仿京东淘宝 商品详情页 商品图片效果
- eclipse内置jetty运行web项目
- 基于SSM的秒杀业务学习[1] spring/ mybatis/springmvc整合及配置
- NKOJ 3762 守夜人 (并查集)