指针问题,
#include <stdio.h>
int main()
{
int a,b,c;
int *d,*e,*f,*g;
printf("请输入三个数:");
scanf("%d %d %d",&a,&b,&c);
d=&a;
e=&b;
f=&c;
if(a>b)
{
g=d;为什么这里不加*
d=e;
e=g;
}
if(a>c)
{
g=d;
d=f;
f=g;
}
if(b>c)
{
g=e;
e=f;
f=g;
}
printf("%d<=%d<=%d\n",*d,*e,*f);
return 0;
} 因为它们之间互换的是地址,int *不等价于 int g和d都是int *类型的,同为int指针。
*g和*d都是int 数值,也就是整数。
赋值的话,应当同一类型进行赋值,换句话说,g是指针,d是指针,*d是整数。 d和g都被定义成指针了,d=g是同类型赋值(指向),不加* d与g同为指向整型的指针变量,相同的变量类型间可以直接赋值
页:
[1]