关于数组越界

P1001 A+B Problem

int64 @ 2021-08-24 21:53:15

下面这段代码:

#include<iostream>
using namespace std;

int a[4];

int main() {
    cin >> a[0] >> a[1];
    a[10] = a[0] + a[1];
    a[2] = a[10];
    cout << a[2] << endl;
    return 0;
}

明显 a[10] 超过了 a 定义的长度 4,但是为何没有影响程序并且 AC 了此题?


by wsyhb @ 2021-08-24 22:14:24

说句闲话,对于代码比较长的题,若是在哪个犄角旮旯越界了,真的调死人……


by q779 @ 2021-08-24 22:18:04

@wsyhb 同感(

我有次提交的代码,数组越界了,本地过不了样例,但是提交AC了 记录在这


by 王熙文 @ 2021-08-24 22:20:08

有点像这道题


by WYXkk @ 2021-08-24 22:20:36

@int64 a[10] 其实就是 *(a+10),某种意义上是 a 的第 10 位存储的数

因为 u[v](在通常情况下)就是 `(u+v),所以10[a]` 这种东西也是可以写的……*


by xuan_gong_dong @ 2021-09-12 19:07:17

让我们回顾一下什么是数组。

数组就是不连续的空间。ok


by UID640538 @ 2022-02-22 19:32:58

@sb_yyds


by Super_Supper @ 2022-02-23 20:02:16

@xuan_gong_dong

等等,不连续的?


by xuan_gong_dong @ 2022-04-16 11:25:54

@sb_yyds 是的呢


by Super_Supper @ 2022-04-16 11:43:00

@xuan_gong_dong

那你怎么做到O(1)访问?


by xuan_gong_dong @ 2022-04-16 11:49:59

@sb_yyds 这个问题你得问c语言的创屎人


上一页 | 下一页