
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;
}
能说的详细点吗? 展开
#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;
}
能说的详细点吗? 展开
展开全部
解:第一个函数体中这么写只是将两个指针的指向交换了一下,a,b两个值并没有交换
即pa指向了b的内存空间,而pb指向了a的内存空间。
第二个中交换的是指针pa,pb所指向的内存空间里的值,即a,b两个的值交换了一下
不过改了之后指针pt也要分派内存空间
~~
希望能帮到你
即pa指向了b的内存空间,而pb指向了a的内存空间。
第二个中交换的是指针pa,pb所指向的内存空间里的值,即a,b两个的值交换了一下
不过改了之后指针pt也要分派内存空间
~~
希望能帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void swap(int *px, int *py)
{
int tmp;
tmp = *px;
*px = *py;
*py = tmp;
}
pt是指针,但是你没分配内存给他,不能取值的
{
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;
不用指针
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;
不用指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量pt没有定义。而且pt没有分配内存空间,*pt是误操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询