为什么函数中的局部数组不能接受一个不稳定的参数?在c++中

Why local array in function could not take an inconstant parameter? in c++

本文关键字:不稳定 一个 参数 c++ 局部 函数 数组 不能接受 为什么      更新时间:2023-10-16

例如,在函数中,"a"数组和"first"数组(通常数组不能将非常量的整数作为参数)可以将"d"answers"a1"作为参数。我的问题是,为什么这样做,它们之间有什么区别?

#include <iostream>
using namespace std;
class BC {
    int first[];
    int modify(int a[], int d) {
        int a1;
        a[a1];
        first[a1];
        int sec[a1];
        //a[d];
        //first[d];
        //sec[d];
    }
};
a[a1]; // This is not an array declaration.  This is referring to the a1-th element of the array.
first[a1]; // Same as above
int sec[a1]; // This IS a declaration and so SHOULD fail because a1 is non-const.

为了进一步阐明,你可以说

a[a1] = 5;

int x = a[a1];

当你写

a[a1];

您引用的是数组的一个元素,但没有对该值执行任何操作。这是允许的,尽管看起来毫无意义。[]运算符可能被重载,因此该语句可能会起作用。这就是它被允许的原因。