scanf()函数中"&"的有关问题
scanf()函数中"&"的问题
scanf( "%f\n ", &money);
为什么我把scanf()函数中money前面的 "& "去掉后调试时
一直提示我内存不能为written ? //这个&是必须的
而为什么在别的语言中变量是可以直接接收输入,例如C#中:
string s = Console.ReadLine();
C中必须要加一个&,这是为什么?
------解决方案--------------------
这就是 C 的低级之处。
在 C 中一个变量名如果出现在 = 的左边,则表示左值,代表一个内存地址。
如果出现在 = 的右边,或者函数参数中时,它是一个右值,代表的是内存里存储的内容。
所以, 在 scanf 中作为参数得到的是 money 的内容,而要把值写进去,scanf 需要一个内存地址。
scanf( "%f\n ", &money);
为什么我把scanf()函数中money前面的 "& "去掉后调试时
一直提示我内存不能为written ? //这个&是必须的
而为什么在别的语言中变量是可以直接接收输入,例如C#中:
string s = Console.ReadLine();
C中必须要加一个&,这是为什么?
------解决方案--------------------
这就是 C 的低级之处。
在 C 中一个变量名如果出现在 = 的左边,则表示左值,代表一个内存地址。
如果出现在 = 的右边,或者函数参数中时,它是一个右值,代表的是内存里存储的内容。
所以, 在 scanf 中作为参数得到的是 money 的内容,而要把值写进去,scanf 需要一个内存地址。