
c语言,指针,交换三个数的大小顺序~~~~(>_<)~~~~
#include<stdio.h>intmain(){voidchan(int*x,int*y);int*a,*b,*c,r,s,t;printf("input3numb...
#include<stdio.h>
int main()
{
void chan(int *x,int *y);
int *a,*b,*c,r,s,t;
printf("input 3 numbers\n");
scanf("%d%d%d",&r,&s,&t);
*a=r;
*b=s;
*c=t;
chan(a,b);
chan(b,c);
chan(a,b);
printf("%d%d%d",r,s,t);
return 0;
}
void chan(int *x,int *y)
{int *p;
if (*x<*y)
*p=*x;
*x=*y;
*y=*p;
} 展开
int main()
{
void chan(int *x,int *y);
int *a,*b,*c,r,s,t;
printf("input 3 numbers\n");
scanf("%d%d%d",&r,&s,&t);
*a=r;
*b=s;
*c=t;
chan(a,b);
chan(b,c);
chan(a,b);
printf("%d%d%d",r,s,t);
return 0;
}
void chan(int *x,int *y)
{int *p;
if (*x<*y)
*p=*x;
*x=*y;
*y=*p;
} 展开
4个回答
展开全部
亲你这个程序中存在两个错误。
1.给指针赋值的方式不对,a,b,c这三个指针并没有进行初始化赋值,所以只能将变量的地址赋给它,将r的地址赋给指针,应改为
a=&r;
b=&s;
c=&t;
2.chan函数里面,应改为
*p=*x;
*x=*y;
*y=*p;
有问题可以追问,望采纳。
1.给指针赋值的方式不对,a,b,c这三个指针并没有进行初始化赋值,所以只能将变量的地址赋给它,将r的地址赋给指针,应改为
a=&r;
b=&s;
c=&t;
2.chan函数里面,应改为
*p=*x;
*x=*y;
*y=*p;
有问题可以追问,望采纳。
追问
第二处的原因是什么呢
追答
抱歉,刚才打漏了,第二个问题p前面的*都应该去掉,前面
int *p;的*也要去掉。
指针是个存着地址的变量,我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址。*y=p;
此时p里面存的是a的地址(记住这一点),还可以用取地址符&获取变量的地址,如&a;表示的是a的地址。变量的值可以用*号获取。* 后面加一个地址,表示这个地址里面的数值(也记住,很重要)
指针有几个原则
* 后面只能跟地址, *p 表示参数的值
&后面只能跟变量。 &a 表示参数a的地址
展开全部
*a=r;
*b=s;
*c=t;
改成:a=&r;b=&s;c=&t;
'*'是取值运算符,‘&’是取地址
*p=*x;
*x=*y;
*y=*p;
把p前面的'*'都去掉
*b=s;
*c=t;
改成:a=&r;b=&s;c=&t;
'*'是取值运算符,‘&’是取地址
*p=*x;
*x=*y;
*y=*p;
把p前面的'*'都去掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
野指针是不能进行*操作的
有两处错误
a=&r;
b=&s;
c=&t;
/////////////////////////////////////
void chan(int *x,int *y)
{int p;
if (*x<*y)
p=*x;
*x=*y;
*y=p;
}
//////////////////////////////////////
有两处错误
a=&r;
b=&s;
c=&t;
/////////////////////////////////////
void chan(int *x,int *y)
{int p;
if (*x<*y)
p=*x;
*x=*y;
*y=p;
}
//////////////////////////////////////
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
void chan(int *x,int *y);
int r,s,t;
printf("input 3 numbers\n");
scanf("%d%d%d",&r,&s,&t);
chan(&r,&s);
chan(&s,&t);
chan(&t,&r);
printf("%d %d %d\n",r,s,t);
return 0;
}
void chan(int *x,int *y)
{int p;
if (*x<*y)
p=*x;
*x=*y;
*y=p;
}
int main()
{
void chan(int *x,int *y);
int r,s,t;
printf("input 3 numbers\n");
scanf("%d%d%d",&r,&s,&t);
chan(&r,&s);
chan(&s,&t);
chan(&t,&r);
printf("%d %d %d\n",r,s,t);
return 0;
}
void chan(int *x,int *y)
{int p;
if (*x<*y)
p=*x;
*x=*y;
*y=p;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询