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

C语言:函数中参数的传值与传地址

2017-07-20 16:14 253 查看
任务代码:

#include <stdio.h>

void swap(int *a ,int *b)//按之前对指针认识,*a代表指针变量a,a存储的是地址,*a是地址的值。
{                        //但是可以看到下面传输过程中swap(&a,&b),取的是地址传输给了*a.看似是矛盾的!
//这里着重注意特例!!!:函数的参数是指针类型,会将一个变量的地址传送到被调用的函数中。
//不是传递值,是传递地址值!!!!!!
int t;
t=*a;
*a=*b;
*b=t;
return;
}

int main()
{
int a,b;
printf("请输入两个数:");
scanf("%d %d",&a,&b);
printf("调用前:%d %d\n",a,b);
swap(&a,&b);//传输的是a,b两个变量的地址
printf("调用后:%d %d\n",a,b);
return 0;
}


执行情况:



知识总结:

函数调用结束后回会释放内存空间;



传地址需要运用指针来做:



尤其注意特例:和传统指针概念理解的的不同





另外:这两种看似符合逻辑的做法也是行不通的!(尤其是第二种)

所有函数指针在执行的时候,形式参数的值无论怎么变化都会被内存释放(不会影响返回结果),而真正有存在意义的是形式参数中存放的地址,将会再返回的时候影响结果



心得体会:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: