当前位置: 代码迷 >> C语言 >> 关于scanf函数于变量地址&之间的问题请教
  详细解决方案

关于scanf函数于变量地址&之间的问题请教

热度:267   发布时间:2004-11-03 16:52:00.0
关于scanf函数于变量地址&之间的问题请教
我们用scanf 函数的时候在格式符后面就是变量的地址了,书上说这里的每一个变量前面都要代一个& 可是我试了有的时候是会提示出错但有的时候即然什么事都没有而且也会传到dos下提示我们输入数字只不过好像输出的结果是不正确的,但是这明显是不对的啊!!为什么不会报错啊!高手指教啊!!!
搜索更多相关的解决方案: 变量  scanf  函数  地址  

----------------解决方案--------------------------------------------------------
能不能把你的代码贴出来?
----------------解决方案--------------------------------------------------------

一般情况下,不加&是不会提示出错的

不过你的结果肯定是不会对了。因为不加&你输入的东西不能传入变量


----------------解决方案--------------------------------------------------------

不过也有不需要加&的,例如:

定变量本身就是一个指针(如:int *a;scanf("%d",a))

或者是数组名(如:char a[10];scanf("%s",a))

这时的程序是对的


----------------解决方案--------------------------------------------------------
以下是引用lvlink在2004-11-03 21:08:34的发言:

不过也有不需要加&的,例如:

定变量本身就是一个指针(如:int *a;scanf("%d",a))

或者是数组名(如:char a[10];scanf("%s",a))

这时的程序是对的

兄弟这样写是不合法的啊,在C语言中不是有规定不能对数组中的名直写操作,要于FOR语句结合才行啊!


----------------解决方案--------------------------------------------------------
晕死,他的第一个不合法,a是个NULL未初始化。但是第二个合法只不过可能发生溢出!!!
----------------解决方案--------------------------------------------------------

什么&,他只是个标志,告诉你要被输入的地址,是后面的那个变量所存的地址,

只要你知道你想存的地址,用不用&都可以,

例如:

int a;scanf("%d",&a);这个&a就是表示a变量的地址;

我也可以这样写:

int a,b;b=(int)&a;scanf("%d",b);这时b变量的值就是a的地址,你看一下结果不久对了。

而,int a,*b;b=&a;scanf("%d",b);同上!!!


----------------解决方案--------------------------------------------------------
以下是引用时空之蕊在2004-11-04 11:25:47的发言: 晕死,他的第一个不合法,a是个NULL未初始化。但是第二个合法只不过可能发生溢出!!!

说错了吧,a是未初始化,但他不是NULL。而是一个随机的值,这才是他产生危险的原因,

因为你不知道你所符的这个值被放到了什么地方,而这个地址原来是用做什么的你更不知道。

同时,产生错误的原因,也不应该说叫做“溢出”!!!!


----------------解决方案--------------------------------------------------------

HE,HE!

&是操作符!^_^


----------------解决方案--------------------------------------------------------

对,是操作符!!


----------------解决方案--------------------------------------------------------
  相关解决方案