C语言中指针作为函数参数的问题。

#include"stdio.h"voidswap(int*p1,int*p2);voidmain(){int*p1,*p2;inta,b;printf("EnterNu... #include "stdio.h"
void swap(int *p1,int *p2);
void main()
{
int *p1,*p2;
int a,b;
printf("Enter Numbers:\n");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a>b) swap(p1,p2);
printf("%d %d\n",a,b);
printf("%d %d\n",*p1,*p2);

}
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
上面程序中主函数传递的是地址,而void swap(int *p1,int *p2)是int *p1和int *p2啊??
swap() 中为什么是 int *p1 和int *p2 啊?*p1和*p2不是p1、p2指向的变量么!而主函数传递过来的是地址啊! 百思不得其解!= =!
展开
 我来答
domain_pro
2011-09-26 · TA获得超过279个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:271万
展开全部
没有任何错误啊!

p1,p2本来就是int*类型的,swap参数也是int*类型的, if(a>b) swap(p1,p2);这一句没错啊!swap本来就需要指针变量,p1,p2正好又是指针变量,直接写上去就可以了!

swap() 中是 int *p1 和int *p2这是因为这是swap的定义,既然是定义就要声明参数的类型,这里声明的是int*类型,那使用的时候就要传递int*类型的。主函数里的类型也是int*,对应上了,就可以了。

在定义变量的时候,建议你把*和数据类型当做一个整体,看成一种新的数据类型,不要把*和变量看做一个整体。比如int* p,int*是一个数据类型,p是变量名。
涛褪荒芜
推荐于2017-10-12 · 超过31用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:80.6万
展开全部
O(∩_∩)O哈哈~。在函数声明和定义时Fun(int p1,int p2)是不是表示它的参数是两个int型的整数。Fun(int* p1,int* p2)则使表示它的参数是两个指针类型的。定义和声明时的变量只是代替符,其它的运算符号与类型符号加起来才是参数类型。你如果觉得不好理解,那么在写的时候就把int 和*放在一起(int*),这就是参数类型。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2011-09-26 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3986万
展开全部
更正以下楼主的问题补充,swap函数的两个参数,定义的时候,定义p1和p2,他们都int*类型的,也就是两个整型指针的类型。主函数传递进来的是a和b的地址,swap函数是将两个地址的值,也就是*p1和*p2交换,达到的效果是将两个地址上的值交换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
只会做土豆配西红柿
2011-09-26 · 超过28用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:42.1万
展开全部
恩,int *p1 代表的不就是int a吗!!!!!不是一样的,程序没有错啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式