C语言三种参数传递方式
2024-10-07 02:16:30
值传递、指针传递、引用传递
只有在函数调用时,才会为形参分配内存空间,调用结束便会释放。
值传递和指针传递,传递的都是实参的一份拷贝。
C语言在线编译器:http://www.dooccn.com/c/
值传递:
#include <stdio.h> void exchange(int x, int y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
printf("x=%d,&x=%d\ny=%d,&y=%d\n",x,&x,y,&y);
} int main(void)
{
int a=, b=;
printf("a=%d,&a=%d\nb=%d,&b=%d\n",a,&a,b,&b);
exchange(a,b);
printf("a=%d,&a=%d\nb=%d,&b=%d\n",a,&a,b,&b);
return ;
}
结果:
a=,&a=
b=,&b=
x=,&x=
y=,&y=
a=,&a=
b=,&b=
地址传递:
#include <stdio.h> void exchange(int *x, int *y)
{
int *tmp=NULL;
tmp = x;
x = y;
y = tmp;
printf("*x=%d, x=%d\n", *x, x);
printf("*y=%d, y=%d\n", *y, y);
} int main(void)
{
int a=, b=;
printf("a=%d, &a=%d\n", a, &a);
printf("b=%d, &b=%d\n", b, &b);
exchange(&a,&b);
printf("a=%d, &a=%d\n", a, &a);
printf("b=%d, &b=%d\n", b, &b);
return ;
}
结果:
a=, &a=-
b=, &b=-
*x=, x=-
*y=, y=-
a=, &a=-
b=, &b=-
引用传递
#include <stdio.h> void exchange(int &x, int &y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
printf("x=%d, &x=0x%d\n", x, &x);
printf("y=%d, &y=0x%d\n", y, &y);
} int main(void)
{
int a=, b=;
printf("a=%d, &a=0x%d\n", a, &a);
printf("b=%d, &b=0x%d\n", b, &b);
exchange(a,b);
printf("a=%d, &a=0x%d\n", a, &a);
printf("b=%d, &b=0x%d\n", b, &b);
return ;
}
结果:
a=, &a=0x1079344872
b=, &b=0x1079344876
x=, &x=0x1079344872
y=, &y=0x1079344876
a=, &a=0x1079344872
b=, &b=0x1079344876
最新文章
- Openxml 笔记
- Web API Filter ActionFilterAttribute 使用
- Linux服务器配置git服务
- linux系统下sd卡的备份与恢复
- watch your tone
- [转]DRY原则和Shy原则
- 管理TEMP数据
- 常用SQL DDL语句
- 【JSP 标签】选择判断c:choose
- C#线程的使用(1)
- Python档案袋(函数与函数装饰器 )
- halcon+WinForm显示rgb图并灰度化
- PTA 逆散列问题 (30 分)(贪心)
- VS2017 安装打包插件
- [HEOI2017] 相逢是问候
- python第十九天——感冒中
- 【Codeforces 1129C】Morse Code
- WayOS计费对接(零点计费系统)详细教程
- 一分钟在云端快速创建MySQL数据库实例
- [BZOJ1937][SHOI2004]Mst最小生成树(KM算法,最大费用流)