牛客网语法直播笔记-前30分钟-无图
  xWYnr39PTA9E 2023年11月19日 22 0

学习网址:https://www.nowcoder.com/study/live/528/1/1

第一个问题:数组下标越界

数组下标越界

没有规定说声明的数组要挨着放,也就是图中的abc三个数组是没有规定地址是连在一起的,一般来说编译器是会这么干的,而且每个编译器的都会在之间留点空(也就是0)每个编译器所留的空还不一样。

这里看到上面的两个运行结果输出不一样的内容(相反),是因为

int a[10],b[10];
想访问b[-10]来达到访问a[9]的效果
因为上面说了编译器一般会把定义的数组地址连在一起,所以这样子定义看起来没问题
但是在上图中显示的运行结果说明:
    第二个代码定义的数组是从c数组开始到a数组结束
    第一个代码定义的数组是从a数组开始到c数组结束

像这种情况就要先去看数组还能正常运行吗(数组还活着吗)

上面的代码中的一个逻辑就是
因为定义数组一般都是连续的
所以如果数组下标越界了,
就比如在赋值b数组的值的时候,越界了,a数组就b数组的后面,那么数值就会继续赋值给a数组里面的元素
反之,c在b数组的后面的话就会赋值给c数组里面的值

第二个问题:函数的传参顺序

上面的图中,左边的代码执行结果为2,3;右边的图结果为3, 3
右边的是先将b=b+1执行了之后,再将b值传进去。
不同的操作系统方式是不一样的,不同的编译器也是不一样的

Linux系统下,会先传左边的。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  k5GskpyrCqoj   2023年11月13日   31   0   0 单片机sdcc编译器
  QtpjMRSUUfXb   2023年11月19日   33   0   0 赋值Python
  xWYnr39PTA9E   2023年11月19日   38   0   0 迭代Python数组
  tprTMCWDkFAR   2023年11月12日   20   0   0 正态分布ci数组
xWYnr39PTA9E