C语言值传递与址传递
2020-02-16 17:45
302 查看
简要说明
弄清值传递与址传递对于熟练运用C语言非常重要,值传递很简单,就是复制副本,把副本带入函数里,下面用代码做了简单的测试来说明址传递。
代码
#include<stdlib.h> #include<stdio.h> void swap1(int * a, int* b,int c[3]); void main() { int a = 1; int b = 2; int c[3] = { 0 }; int *a_p = &a; int * b_p = &b; printf("&a_p=%d,a_p=%d,&a=%d,*a_p=%d\n&b_p=%d,b_p=%d,&a=%d,*b_p=%d\n", &a_p, a_p,&a, *a_p, &b_p, b_p, &b,*b_p); printf("&c=%d,c=%d,*c=%d\n", &c, c, *c); swap1(a_p, b_p,c); printf("c[0]=%d,a=%d",c[0], a); system("pause"); } void swap1(int * a_p, int* b_p,int c[3]) { printf("进入局部函数后\n"); printf("&a_p=%d,a_p=%d,*a_p=%d\n&b_p=%d,b_p=%d,*b_p=%d\n&c=%d,c=%d,*c=%d\n", &a_p,a_p,*a_p,&b_p,b_p,*b_p,&c,c,*c); c[0] = 11; *a_p = 111; }
结果
分析与结论
分析:对比指针变量进入函数后的地址,发现地址变了,证明指针变量也是复制了副本,但是指针变量保存的值,没变,它代表着,可以操作外界的变量。
结论:指针传递和值传递当参数传递时,都是一样的,先复制副本,保存在另一个位置,同时,复制的值不变。由于对于指针来说,其值表示的是另一个变量,故可以通过指针改变指针所值得量。
补充:本次还未验证引用传递
- 点赞
- 收藏
- 分享
- 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/3.png)
相关文章推荐
- C++课程笔记 Lesson 01
- 五道金融计算题在C语言上的实现
- iOS导入c++语言的静态库之后编译不过,先要检查是否导入了libstdc++
- c++ 编译出现error : identifier '_DebugHeapTag'
- C/C++内存四区
- c语言数字图像处理(二):图片放大与缩小-双线性内插法
- c语言数字图像处理(三):仿射变换
- c语言数字图像处理(五):空间滤波
- c语言数字图像处理(六):二维离散傅里叶变换
- c语言数字图像处理 4000 (七):频率域滤波
- c语言数字图像处理(八):噪声模型及均值滤波器
- c语言数字图像处理(九):边缘检测
- c语言数字图像处理(十):阈值处理
- MFC C++视频播放和视频的浓缩播放和检测目标接口
- MFC C++ 视频浓缩借口实现
- c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?
- C++静态库与动态库
- SDK开发C++接口定义潜规则
- TQ招聘VC++程序员,应届生也可,关键有水平
- 在C++中,关于STL container(vector、list...)传入函数模板的问题