函数表达式中的*可否去掉

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:32:47
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
main()
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}
swap(int *p1,int *p2)中的*能去掉么

不能去掉,去掉以后 swap(int P1,int P2)这个函数的参数是两个整形,而swap(int *P1,int *P2)的参数是两个指针,整形和指针是不同类型的变量整形就是一个整形变量,而指针是指向一个内存地址的 int *P1引用的是一个整形变量的地址而不是P1这个数

不能,在主函数中的swap调用的时候参数是地址,所以在swap的定义中要用指针来接收地址。

不能去掉
这里是值引用

当然是可以的啊,但是如果你去了之后就是,传值调用的函数,而不是引用调用的了,就是说当你在调用的时候,不是直接对你传过去的变量进行操作的,也就是所a,b的值的输出是没有交换,因为是传值,只是复制过去了,而不改变该变量本身所储存的数值

No