C语言问题

为什么有是在c语言中有的变量有&m,而有的不需有啊?
是不是输入scanf需要&但是printf不需要啊

&是取地址符,scanf是要用户输入数据的语句,这样当数据被输入后,就需要接受数据,并同时将数据储存在相对应的地址内,而&就是取得指定的地址(变量指向的地址),并将数据储存起来.printf就不一样了,如果用了&符,就会输出取得地址的默认的地址串,比如像:0x0026a000之类的字符串,它是系统内存的默认字串,不会改变,因此要引用变量或指针.

如果还有不明白的地方,可以发我邮箱:
[email protected]
希望能对你有所帮助
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-05-03
这和被操作数的类型有关。
printf有时也是需要的
如在输出字符串数组时

printf("%s",&str[0]);
等效于
printf("%s",str);

str也是一个地址。

scanf作用是将一个立即数放入内存地址。被操作数有两个,一个是你输入的立即数(从缓存中取得),另一个是内存地址(也就是你变量所在的地址),需用&标记。
第2个回答  2007-05-03
&是取地址符,scanf用&是接受数据并且存储至变量的地址,printf不需要用&,它直接读取变量内容,并输出!
第3个回答  2007-05-03
可以这么理解,呵呵
&m的意思指的就是存储到M
第4个回答  2007-05-03
&是取地址符,scanf用&是接受数据并且存储至变量的地址,printf不需要用&,它直接读取变量内容,并输出!
回答者:wangyaozh - 助理 三级 5-3 09:20

就是这样的~~~
第5个回答  2007-05-06
刚开始你只需记住就行
相似回答