2 xyhqqlove xyhqqlove 于 2016.01.22 22:12 提问

scanf变量类型的问题

请问scanf("%s", s)不用&,但是scanf("%d", &n);就需要&,那么别的变量类型呢?

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.22 22:14
已采纳

因为字符数组已经是指针了,所以不需要取地址,如果是别的变量,都需要。如果这个类型本身是指针,就不需要

比如
int i;
int * p = &i;
scanf("%d", p);

enpterexpress
enpterexpress   2016.01.22 22:47

scanf(“格式控制字符串”, 地址表列);
地址列表的不同表示

qq_27183003
qq_27183003   Ds   Rxr 2016.01.22 23:12

c语言规定数组名就是地址,所以如果s是数组名,或者是指针,那么
scanf("%s",s); 就可以了,s就是地址,不用在加&

xyhqqlove
xyhqqlove 谢谢,你们都是对的。
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.01.22 22:27

scanf函数的一般形式为:
scanf(“格式控制字符串”, 地址表列);
所以,它需要地址。对于变量,看它是否是地址?如果不是,则需要取地址符,如:&。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!