读书人

scanf()函数中quot;amp;quot;的有关问题

发布时间: 2012-03-03 15:33:02 作者: rapoo

scanf()函数中"&"的问题
scanf( "%f\n ", &money);

为什么我把scanf()函数中money前面的 "& "去掉后调试时
一直提示我内存不能为written ? //这个&是必须的

而为什么在别的语言中变量是可以直接接收输入,例如C#中:
string s = Console.ReadLine();

C中必须要加一个&,这是为什么?

[解决办法]
这就是 C 的低级之处。
在 C 中一个变量名如果出现在 = 的左边,则表示左值,代表一个内存地址。
如果出现在 = 的右边,或者函数参数中时,它是一个右值,代表的是内存里存储的内容。
所以, 在 scanf 中作为参数得到的是 money 的内容,而要把值写进去,scanf 需要一个内存地址。

读书人网 >C语言

热点推荐