m0_64313904 2021-12-29 23:02 采纳率: 100%
浏览 88
已结题

C语言中scanf函数加不加&号问题

我今天编写程序的时候,一个整型数组
int a[10],输入时,for( i=0; i<10;i++)
scanf("%d", a[i]);
我就没加&号,然后系统居然也没有报错,最后求的是这十个数字的平均值,然后调试成功,答案也是对的。我就很惊恐,不知道是系统的问题,还是说可以这样??
我又思考,有点绕进去了,因为数组本身也像是指针,a[1]指向的就是某一个数字的地址,那么这样想我不知道对不对
系统调试成功又是怎么回事
我真的好慌
因为今天考试就是这道题,我在系统里面调试成功了,可是没加&,好像真的不对
求大佬们解释一下

  • 写回答

3条回答 默认 最新

  • 关注

    这样写是不行的,可能你的编译器恰好帮你优化了
    我这边这样写会直接段错误退出
    是真的不对
    有帮助望采纳~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 兰舟千帆 Java领域优质创作者 2021-12-29 23:11
    关注

    需要加&,a[i]代表的是i索引下标的值,a+i代表取地址。a[1]就是1索引下标的值,怎么能是地址呢?

    评论
  • 未见花闻 后端领域优质创作者 2021-12-29 23:20
    关注

    &符号是取地址符,scanf第二个参数是输入数据的地址,由于地址也是一个整数,所以在部分编译器下可能不会报错但是在程序运行的时候程序会崩溃,为数组元素写入值时不使用&是错误的,数组内的元素并不会存入你所输入的值,对于系统输出结果是正确的,也许初始化的数组元素的值刚好是对应数组的地址,结论就是需要加&。

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 burpsuite密码爆破
  • ¥15 关于#ubuntu#的问题,如何解决?(相关搜索:移动硬盘)
  • ¥15 scikit安装之后import不了
  • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
  • ¥15 人脸识别相关算法 YOLO,AI等
  • ¥15 spark问题方便加V17675797079
  • ¥15 Python代码不打印的原因
  • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
  • ¥15 数学问题也不知道那种类型的问题
  • ¥15 R作图的时候,文本框重叠了怎么办?