关于函数实参和形参的地址传送
来源:互联网 发布:淘宝美工累不累 编辑:程序博客网 时间:2024/06/05 19:34
编写一个函数实现交换两个数的值
void swap(int a,int b)
{
int t;
t = a;
a = b;
b= t;
}
#include<stdio.h>
int main()
{
int i = 5;
int j = 6;
printf("交换前: i = %d,j = %d\n",i,j);
swap(i,j);
printf("交换后: i = %d,j = %d\n",i,j);
return 0;
}
运行结果:
交换前: i = 5,j = 6交换后: i = 5,j = 6
为什么会这样呢?
c语言的函数参数从功能上可以分为数值型参数和地址型参数,这里是数值型参数,在主调函数发生调用时计算机将实参的值计算出,然后传给形参,然后实参形参就没有关系了,在上面的程序中,当i和j的值传给a和b之后,a b和i j就没有关系了,在执行被调函数swap()时,只是交换了形参a b的值,却不影响实参i j的值,所以输出时i j的值并没有改变。
要想交换两个整数的值,应该用地址型参数来实现,如下函数:
void swap(int a[2])
{
int t;
t = a[0];
a[0] = a[1];
a[1] = t;
}
#include<stdio.h>
int main()
{
int x[] = {5,6};
int j = 6;
printf("交换前: x[0] = %d,x[1] = %d\n",x[0],x[1]);
swap(x);
printf("交换后: x[0] = %d,x[1] = %d\n",x[0],x[1]);
return 0;
}
交换后: x[0] = 6,x[1] = 5
函数swap()的形参实参都是数组名,数组名是地址,这种传送就是地址传送,交换时是交换的地址,地址又指向两个整数,所以整数也交换了。
- 关于函数实参和形参的地址传送
- 关于函数形参和实参关系的理解
- 总结:数组作为实参的传送及函数中的形参接受
- 函数的形参和实参
- 函数的形参和实参
- 关于形参和实参
- 关于实参和形参
- 关于形参和实参
- 关于函数调用过程中的实参和形参问题
- 关于C和C++中函数调用时的形参和实参
- 函数 形参和实参
- 关于Java中的形参和实参的区别
- 函数实参和形参(常见的错误理解)
- 【js学习笔记-047】-- 函数的实参和形参
- 《权威指南》笔记 -- 8.3 函数的实参和形参
- 8.3 C语言函数的形参和实参
- JavaScript学习——函数的实参和形参
- 函数实参和形参之间的传递
- YII2框架查询源码解析
- Openssl的编译安装以及Vs2012上环境搭建教程
- 算法导论第一节学习笔记
- 程序背后那些事
- Intellij IDEA集成tortoiseSVN问题解决
- 关于函数实参和形参的地址传送
- 1035 最长的循环节
- Html编码(&#数字型)解码
- 信号
- [Linux]在终端启动程序关闭终端不退出的方法
- 七层网络模型与四层网络模型及每层的网络协议?
- wmjxoj - 1050: QAQ的公式求解(二)【快速幂 + 矩阵】
- sql语句
- LeetCode No.38 Count and Say