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

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

解题:指针值传递

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

????????

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值