c语言中的void表示无返回值,那下面的第一个程序怎样理解?
答案:4 信息版本:手机版
解决时间 2019-10-06 18:36
已解决
2019-10-06 05:52
void swap(int *x,int *y)
{int t;
t=*x;*x=*y;*y=t;
}
main()
{int a=1,b=2,*pa,*pb;
pa=&a;pb=&b;
swap(pa,pb);
printf("%d,%d",a,b);
}
void不是无返回值的么,这个程序怎么理解?
void swap(int *x,int *y)
{int *t;
t=x;x=y;y=t;
}
main()
{int a=1,b=2,*pa,*pb;
pa=&a;pb=&b;
swap(pa,pb);
printf("%d,%d",a,b);
}
第一个程序实现了数的交换,为什么第二个不能?
最佳答案
2019-10-06 06:54
这里的void就是没有返回值的意思,实现变量值交换是通过指针来实现的
第一个修改了指针指向位置的值,所以实现了变量值交换
第二个只是交换了指针形参,并没有交换\指向位置的值,所以还是原来的
全部回答
1楼
2019-10-06 10:56
是无返回值
比如
void add(int x,int y)
{
printf("%d",x+y);
}假设x=1,y=2
在屏幕上输出 3
而
int add(int x,int y)
{
return x+y;//返回值是x+y
}
就要如下用
int a;
a=add(1,2);//将返回值1+2赋给a
printf(“%d”,a);
在屏幕上输出 3
2楼
2019-10-06 09:50
在 第一个 void方法中,没有返回值,那是参数值, 第二个中掉了个(*)
因为传参数是传给方法中申明的变量中的(*x 和*Y 中)
3楼
2019-10-06 08:33
void swap(int *x,int *y) //传值:将pa拷贝给x,将pb拷贝给y,因为是拷贝,所以x与pa,y与pb其实是没有关系的,x与y的改变对pa与pb没有影响。函数的作用:将行参x,y的值互换,对实参完全没有影响。
{int *t;
t=x;x=y;y=t;
}
main()
{int a=1,b=2,*pa,*pb;
pa=&a;pb=&b;
swap(pa,pb);
printf("%d,%d",a,b);
}
void swap(int *x,int *y)//传值:将pa拷贝给x,将pb拷贝给y,所以x的值等于pa,也等于a的地址,对*x的操作就是对a的操作
{int t;
t=*x;*x=*y;*y=t;
}
main()
{int a=1,b=2,*pa,*pb;
pa=&a;pb=&b;
swap(pa,pb);
printf("%d,%d",a,b);
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯