C语言关于指针作为函数参数问题,求高手指教!

源程序:#include<stdio.h>intmain(void){inta=1,b=2;int*pa=&a,*pb=&b;voidswap(int*px,int*py... 源程序:
#include<stdio.h>
int main(void)
{
int a=1,b=2;
int *pa=&a,*pb=&b;
void swap(int *px,int *py);
swap(pa,pb);
printf("After calling swap2:a=%d,b=%d\n",a,b);
return 0;
}
void swap(int *px,int *py)
{
int *pt;
pt=px;
px=py;
py=pt;
}
在这里,为什么函数体这么写会出错呢?还有如果这么写正确吗?
void swap(int *px,int *py)
{
*pt=*px;
*px=*py;
*py=*pt;
}
能说的详细点吗?
展开
 我来答
year陆楠楠
2013-07-25 · TA获得超过162个赞
知道答主
回答量:27
采纳率:0%
帮助的人:17.2万
展开全部
解:第一个函数体中这么写只是将两个指针的指向交换了一下,a,b两个值并没有交换
即pa指向了b的内存空间,而pb指向了a的内存空间。
第二个中交换的是指针pa,pb所指向的内存空间里的值,即a,b两个的值交换了一下
不过改了之后指针pt也要分派内存空间
~~
希望能帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周生008
2013-07-25 · TA获得超过1222个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:695万
展开全部
void swap(int *px, int *py)
{
int tmp;
tmp = *px;
*px = *py;
*py = tmp;
}

pt是指针,但是你没分配内存给他,不能取值的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
是一样的,不分配地址,
void swap(int *px,int *py)
{
int *pt=net int;

*pt=*px;
*px=*py;
*py=*pt;
delete pt;

}
如果加上地发配就没问题了
要不就用
int pt;
pt=*px;*px=*py;*py=pt;
不用指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e2dbec6
2013-07-25 · TA获得超过273个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:282万
展开全部
变量pt没有定义。而且pt没有分配内存空间,*pt是误操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式