ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

指针做传参时值传递和地址传递的区别

2022-02-22 14:02:58  阅读:172  来源: 互联网

标签:传参 p2 p1 int 传递 pointer 指针


问题:输入的两个整数按大小顺序输出。用函数处理,而且用指针类型的数据作函数参数。

解题:指针值传递

swap(int *p1,int *p2)

{

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

main()

{

int a,b;

int *pointer_1,*pointer_2;

printf("please input two number:\n");

scanf("%d%d",&a,&b);

pointer_1=&a;

pointer_2=&b;

swap(pointer_1,pointer_2);

printf("\na=%d,b=%d\n",a,b);

}

输出:

please input two number:

1 3

a=3,b=1

解析:输入原理如下

上面指针值传递是正确的,下面指针传递又如何呢?,看看......

解题:指针地址传递

swap(int *p1,int *p2)

{
int *p;
p=p1;
p1=p2;
p2=p;
}

输出:

please input two number:

1 3

a=1,b=3

????????

我们不是交换地址了吗?怎么值会没有改变呢?

解析:输出原理又如下,将与上面的值传递是有差别的.

有了上面的简易分析流程,我们能够比较直观的了解指针值传递和指针地址传递的不同。

标签:传参,p2,p1,int,传递,pointer,指针
来源: https://blog.csdn.net/weixin_40749043/article/details/123066681

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有