C语言 scanf的问题(\n 和 &数组名)

前略。。。

int a,b;
scanf("%d%d",&a,&b);
printf("%d%d",a,b);

scanf("%d%d",&a,&b);
和 scanf("\n%d%d",&a,&b);
和 scanf("%d\n%d",&a,&b);
和 scanf("\n%d\n%d",&a,&b);
这四个的输入输出格式可以完全一样 (输入时用空格和换行来结束a、b的输入,效果都一样,然后pringtf输出的结果也一样);

但 scanf("%d%d\n",&a,&b);
在输入两个数之后必须再输入一个数据(不论是int 还是 char )
这样才能输出这两个数,在这之前按多少个换行都不管用。

还有:int a{10};
scanf("%9s",a);
和scanf("%9s",&a);

printf("%s",a);

输出的结果也一样,且编译器不报错,不是说数组名就是地址,不用加&么?为啥加和不加的效果一样?

求解答。。。。。

第1个回答  2013-06-06
你好,数组名为第一个元素的地址,
再取&为数组的首地址,在一维数组他们是相等的
希望回答能帮到你,哪里不清楚再问。本回答被提问者采纳
相似回答