c语言指针法变量交换,为什么返回值为指针,main函数取值不成功?代码如下

#include"stdio.h"int*jiaohuan(int*x,int*y){int*t;t=x;x=y;y=t;}int*jiaohuan(int*x,int*... #include "stdio.h"
int *jiaohuan (int *x,int *y)
{
int *t;
t=x;
x=y;
y=t;
}
int *jiaohuan (int *x,int *y);
int *x;int *y;
void main ()
{
int a=3,b=5;
jiaohuan (&a,&b);
printf("%d %d",*x,*y);
}
展开
 我来答
戊辰1988_
2015-03-10 · 超过19用户采纳过TA的回答
知道答主
回答量:30
采纳率:100%
帮助的人:29.7万
展开全部
代码存在以下问题
1、你是要做变量a和变量b的数据交换,而最后打印的是全局变量*x和*y,全局指针变量x和y是未经过初始化的指针,指向不了有效内存,所以在你printf时必然崩溃。
2、全局指针变量x和y没有必要定义。
3、交换函数的形参指针变量x和y,这两个指针变量与全局指针变量x和y没有关系,在jiaohuan函数中,对形参指针变量x和y做操作并不影响全局指针变量x和y。
4、在jiaohuan函数中,你所做的交换只是对指针进行赋值,并没有交换指针指向的数据,所以也完成不了交换任务。
5、jiaohuan函数的返回值为int型指针,但该函数中并没有返回一个指针变量。
名很难记
2015-03-10 · 超过31用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:43.3万
展开全部
思考int t时的t与int *时的t的区别

前者作为整型变量,可以直接获取对应值。而后者指向整型数据,需要"*t"表示获取内容。此时单独用t则表示使用其指针地址(而非指向的数据).
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
66666顺心
2015-03-10 · TA获得超过819个赞
知道小有建树答主
回答量:393
采纳率:100%
帮助的人:319万
展开全部
当函数调用完后就会被其空间被释放,你只是交换了两个元素的地址并没有改变元素的值..所以
void swap(int* a,int8 b)
{
int t=*a;
*a=*b;
*b=t;
}
int main()
{
int a=3,b=5;
swap(&a,&b);//要想在被调用函数改变原函数的值只能发送其地址;
printf(".....你自己写");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式