C语言中函数参数的传递的三种形式
来源:互联网 发布:淘宝全球购 买手直播 编辑:程序博客网 时间:2024/05/16 08:45
C语言中函数参数的传递有:值传递、地址传递、引用传递这三种形式。
下面用这三种方式来实现两个变量值的对调。代码一为值传递,代码二为地址传递,代码三为引用传递。
示例代码一(该方法并不能实现两个变量值的对调):
void Exchg1(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
printf("x = %d, y = %d\n", x, y);
}
int main()
{
int a = 4,b = 6;
Exchg1(a, b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
输出的结果为:
x = 6, y=4.
a = 4, b=6.
在调用函数Exchg1时,进行的只是简单地值传递,只是把a、b的值分别赋值给了x、y,之后在Exchg1函数体内再也没有对a、b进行任何操作了。交换的只是x、y变量的值,对变量a、b的值没有影响。所以调用Exchg1后变量a、b的值并没有交换。
示例代码二:
void Exchg2(int *px, int *py)
{
int temp = *px;
*px = *py;
*py = temp;
printf("*px = %d, *py = %d.\n", *px, *py);
}
int main()
{
int a = 4;
int b = 6;
Exchg2(&a, &b);
printf("a = %d, b = %d.\n", a, b);
return 0;
}
输出的结果为:
*px=6, *py=4.
a=6, b=4.
在调用Exchg2函数时,进行的是地址传递,是把变量a、b的地址分别赋值给了指针变量px、py,这时对*px、*py的操作也就是对a、b变量本身的操作了。所以,交换*px、*py的值也就是交换变量a、b的值,调用Exchg2后,变量a、b的值交换。
示例代码三:
void Exchg3(int &x, int &y)
{
int temp = x;
x = y;
y = temp;
printf("x = %d,y = %d\n", x, y);
}
int main()
{
int a = 4;
int b = 6;
Exchg3(a, b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
输出的结果为:
x=6, y=4.
a=6, b=4.
在调用Exchg3函数时,进行的是引用传递, 是将a、b分别代替了x、y,也就是x、y分别引用了a、b变量。这样函数里面操作的其实就是实参a、b本身了,所以调用Exchg3后,变量a、b的值交换。
- C语言中函数参数的传递的三种形式
- 第二周【项目1c/c++语言中函数参数传递的三种形式】
- C语言函数的参数传递形式
- C语言中函数参数传递的三种方式
- C语言中函数参数传递的三种方式
- C语言中函数参数传递的三种方式
- 黑马程序员_C语言中函数参数的传递的三种形式
- 第二周项目一 C/C++语言中函数参数函数传递的三种方式
- 第二周 C/C++语言中函数参数函数传递的三种方式
- C语言:函数参数传递的三种方式
- [C]C语言中函数参数传递的三种方式(x,*x,&x)
- 第二周项目1—C++/C语言中函数参数传递的三种方式
- 第二周 项目一 C/C++语言中函数参数传递的三种方式(三):.引用传递
- C++语言中函数参数传递的三种方式
- C++语言中函数参数传递的三种方式
- C++语言中函数参数传递的三种方法
- C++语言中函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- OpenGL渲染管线
- 九度OJ 1537 买卖股票
- PAT (Advanced) 1077. Kuchiguse (20)
- 几个简单的排序算法实现
- 安装cadence后,打开文件,提示orcad capture license was not found
- C语言中函数参数的传递的三种形式
- Oracle数据库服务总结
- Java中使用通配符配置struts文件<单通配符和双通配符>
- Android学习笔记(十)ListView之自定义ListView Item
- 作业
- eke图片
- linux中学习笔记之小命令:alias,ps,vim配置
- 分治法,动态规划,贪心算法比较
- 003_006 Python 自动查询节日,即计算日期之间的放假日期