神帝强势归来:关于scanf语句的一些疑问

来源:百度文库 编辑:高考问答 时间:2024/05/05 20:32:48
以前老师说过如果是输入用循环的方式给数组的每个元素赋值,scanf里面不用加取地址符号&,但是在VC6.0里这么做虽然编译没错但是运行时会说某某内存不能为written,这是为什么呢?

你老师说的大概是这个意思
int a[20];
int i;
for(i=0;i<20;i++)
scanf("%d",a+i);
如果是对单变量就要加&
比如
int a[20];
int i;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
只要记住,scanf要传变量地址就行了,而数组名是个地址。

具体情况具体对待。举个例子来看看。

char 类型的变量接收时不需要取地址符
char name[20];
scanf("%s",name);
其他 int float double 都需要取地址符
int a;
scanf("%d",&a);
float a;
scanf("%f",&a);//float 跟VC不兼容 必须有输出值printf("%f",a); 不然会出现错误提示
double a;
scanf("%lf",&a);