您的位置:首页 > 编程语言 > C语言/C++

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;
}

结果

分析与结论

分析:对比指针变量进入函数后的地址,发现地址变了,证明指针变量也是复制了副本,但是指针变量保存的值,没变,它代表着,可以操作外界的变量。
结论:指针传递和值传递当参数传递时,都是一样的,先复制副本,保存在另一个位置,同时,复制的值不变。由于对于指针来说,其值表示的是另一个变量,故可以通过指针改变指针所值得量。
补充:本次还未验证引用传递

  • 点赞
  • 收藏
  • 分享
  • 文章举报
第12个人 发布了3 篇原创文章 · 获赞 0 · 访问量 98 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: