scanf 函数书上写引用数组名不用加& 但看看这个程序...

#include <stdio.h> void main() { int large(int x,int y); int a[10],b[10],i,n=0,m=0,k=0; printf("enter array a: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); printf("enter array b: \n"); for(i=0;i<10;i++) scanf("%d",&b[i]); printf("\n"); for(i=0;i<10;i++) { if(large(a[i],b[i])==1) n=n+1; else if(large(a[i],b[i])==0) m=m+1; else k=k+1; } printf("a[i]>b[i] %d times\na[i]=b[i] %d times\na[i]<b[i] %d times\n",n,m,k); if(n>k) printf("array a is larger than array b\n"); else if(n<k) printf("array a is smaller than array b\n"); else printf("array a is equal to array b\n"); } large(int x,int y) { int flag; if(x>y) flag=1; else if(x<y) flag=-1; else flag=0; return(flag); } 第8和12行我没加&的话 为什么结果错误还显示Null pointer assignment 指针错误 但这例题出现的时候还没提及指针

scanf需要地址作为参数。数组名称本身确实指向一个地址,但是数组名称加上下标指向的是数据的元素,而不是地址,所以不加&就会出现你说的错误。
求采纳
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-22
如果那数组是个字符串 char a[81];,而用scanf函数要求字符串就不用加& scanf("%s",a); 各个数组的因素相当于一个变量,所以在scanf("%d",...)里同样的要加上&

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网