swap函数调用的时候,形参和实参不一样,为什么只能是这样呢

#include"stdio.h"voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}main(){in... #include"stdio.h"
void swap(int *p1,int *p2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
main()
{

int a,b;
int *pointer_1,*pointer_2;
while(1)
{
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
if(a < b)
{
swap(pointer_1, pointer_2);
}
printf("max = %d,min = %d\n",a,b);
}
}
其中定义swap的时候void swap(int *p1,int *p2)括号里是(*p)而调用的时候swap(pointer_1, pointer_2);括号理没有*号了,请问这是为什么
展开
 我来答
楼为0H3cf0
2011-04-02 · TA获得超过768个赞
知道小有建树答主
回答量:150
采纳率:50%
帮助的人:151万
展开全部
定义时,括号里形参前得*表示参数是一个指针类型的变量,要求实参是指向同类型变量的指针或者同类型变量的地址。因为你的实参pointer_1和pointer_2满足这个要求,所以就是可以的。如果pointer_1和pointer_2前面加了*,就成为它们所指向的变量的值了,与形参类型不符合。
追问
形参前的*原来不是表示p这个指针类型变量的值而是指变量本身呀,那形参里的*都可以理解为参数是一个指针类型的变量吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式