关于scanf()函数的一点小疑问

mengjiacun 2012-09-17 10:31:50
float a;
scanf("%f",&a);与下面的这个语句
char name1[11];
scanf("%5s ",name1);一个加了&符号,一个没有加&符号,有何区别啊?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-09-17
  • 打赏
  • 举报
回复
严格上说是没区别的。scanf("", );的第二个参数是一个地址,就是输入的数据要放到内存中的某个地址里。
float a;
scanf("%f",&a);与下面的这个语句
char name1[11];
scanf("%5s ",name1);
第一个变量a是一个float类型的,输入的数据要放到a的内存地址里,所以需要加&,
第二个变量时字符数组,name1本身表示一串字符的首地址,所以就不用加&了。
Gloveing 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不要只看有无&,要看本质, scanf函数是需要取地址的, &a为去a的地址, 按%f格式读取
name1本身就是地址,所以不需再加&,本例中,name1 = &name1[0]
[/Quote]
++
数组名字就代表了数组首地址
yaya_lucky 2012-09-17
  • 打赏
  • 举报
回复
不要只看有无&,要看本质, scanf函数是需要取地址的, &a为去a的地址, 按%f格式读取
name1本身就是地址,所以不需再加&,本例中,name1 = &name1[0]
赵4老师 2012-09-17
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧