
在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;
} 展开
{
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;
} 展开
7个回答
展开全部
swap(int
*p1,int
*p2)
意思是p1,p2都是形参,都是指向整形的指针
temp=*p1;
*p1=*p2;
*p2=temp;
这里*p1代入后为,*(&a)即为a。
即这个函数能处理实参啦。
*p1,int
*p2)
意思是p1,p2都是形参,都是指向整形的指针
temp=*p1;
*p1=*p2;
*p2=temp;
这里*p1代入后为,*(&a)即为a。
即这个函数能处理实参啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以啦,指4字节,变量4字节对程序来说是一样的,唯一区别是看你咋用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询