ELaXiaoSi
ELaXiaoSi
采纳率0%
2017-06-08 15:17 浏览 2.3k

scanf中有&与没有&的区别

c语言中scanf("%s",&s);与scanf("%s",s);的区别是什么?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-06-08 15:50

    前者是把读取的内容放在s指向的地址上,后者是直接放在s这个地址上。如果s是数组,那么没有区别,因为数组本身也是数组首地址的指针

    点赞 1 评论 复制链接分享
  • leewers leewers 2017-06-08 16:05

    理论上来说,scand接收的参数都应该是指针,这个(些)指针指向需要写入的内存, &则是对变量进行取地址。如果有疑问,你可以试试直接传一个int变量进去,导致的结果就是运行时错误(程序崩溃),因为scanf直接将传入的int变量的值当作需要写入内存的地址,而这种情况下几乎肯定会导致非法内存访问。至于参数是数组时,楼上也说了,当数组s作为参数时会自动转换成指向数组首元素的指针,而&s则得到指向数组起始位置的指针,二者实质上指向同一位置,因此效果上没有区别。

    点赞 评论 复制链接分享
  • wzxq123 尚书左仆射 2017-06-09 02:01

    scanf函数是将输入的数据存储到指定的地址中

    点赞 评论 复制链接分享

相关推荐