以下是引用TonyDeng在2012-1-7 21:57:05的发言:
你的基础主要坏在下面两行上:
int *x=&a,*y=&b,*z=&c;
scanf("%d %d %d",*x,*y,*z);
数学上的变量替换,你应该是学过的,编程也可以运用。第二行的*x,根据第一行的定义,其结果是int数据(int *x表明右侧*x的值类型是int),那么scanf("%d", *x)就演变成scanf("%d", a)。从hello,world开始,你就应该知道后者是错的。
你的打基础方向,是搞明白scanf("%d", &a)到底需要指针来干什么!
另外,第一行那样的声明格式,也是你出错的诱因之一(对你来说恐怕还是主因):你看到*x=&a,于是以为scanf("%d", *a)即是scanf("%d", &a),这样一来,又暴露出指针声明的基础问题。
嗯。这个之前已经结贴了,我现在在注意到你的跟帖,你说的很对,我觉得是我的疏忽大意。我这里应该弄成scanf("%d %d %d",x,y,z); 这样就应该是对的,是吧,呵呵
用这个小程序就验证了关于指针的几点基础。
#include"stdio.h"
int main(){
int b;
int* a=&b;
printf("imput a number");
scanf("%d",a);
printf("%d",*a);
}
[
本帖最后由 a271885843 于 2012-1-8 23:06 编辑 ]