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);
} 展开
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);
} 展开
3个回答
展开全部
代码存在以下问题
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型指针,但该函数中并没有返回一个指针变量。
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型指针,但该函数中并没有返回一个指针变量。
展开全部
思考int t时的t与int *时的t的区别
前者作为整型变量,可以直接获取对应值。而后者指向整型数据,需要"*t"表示获取内容。此时单独用t则表示使用其指针地址(而非指向的数据).
前者作为整型变量,可以直接获取对应值。而后者指向整型数据,需要"*t"表示获取内容。此时单独用t则表示使用其指针地址(而非指向的数据).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当函数调用完后就会被其空间被释放,你只是交换了两个元素的地址并没有改变元素的值..所以
void swap(int* a,int8 b)
{
int t=*a;
*a=*b;
*b=t;
}
int main()
{
int a=3,b=5;
swap(&a,&b);//要想在被调用函数改变原函数的值只能发送其地址;
printf(".....你自己写");
}
void swap(int* a,int8 b)
{
int t=*a;
*a=*b;
*b=t;
}
int main()
{
int a=3,b=5;
swap(&a,&b);//要想在被调用函数改变原函数的值只能发送其地址;
printf(".....你自己写");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询