在c语言中整形变量的指针能否赋值给整形变量?

swap(int*p1,int*p2){inttemp;temp=p1;p1=p2;p2=temp;}main(){inta,b;int*pointer1,*pointe... swap(int *p1,int *p2)
{
int temp;
temp=p1;
p1=p2;
p2=temp;
}
main()
{
int a,b;
int *pointer1,*pointer2;
scanf("%d%d",&a,&b);
pointer1=&a,pointer2=&b;
if(a<b) swap(pointer1,pointer2);
printf("\n%d%d\n",a,b);
}
对于这个程序,实参传给形参的是两个指针,而当形主函数调用swap函数后,函数内却把指针直接赋给了整形变量
已解决:
swap(int *p1,int *p2)
{
int temp;
temp=p1;
p1=p2;
p2=temp;
}
这样交换地址是可以的,但是函数调用的单向传递性,不能够实现数值的交换!
故这样是错误的!
正确如下:
swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
展开
 我来答
创作者Tnn6CZ2UQA
2019-10-07 · TA获得超过3553个赞
知道大有可为答主
回答量:3050
采纳率:33%
帮助的人:238万
展开全部
swap(int
*p1,int
*p2)
意思是p1,p2都是形参,都是指向整形的指针
temp=*p1;
*p1=*p2;
*p2=temp;
这里*p1代入后为,*(&a)即为a。
即这个函数能处理实参啦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vaglab
2013-08-30 · 超过33用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:35.8万
展开全部
可以啦,指4字节,变量4字节对程序来说是一样的,唯一区别是看你咋用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式