具有固定大小的C ++数组? [重复]

问题描述 投票:-1回答:1
例如,我创建了一个固定大小为4的静态数组,并使用索引运算符[]将第五个元素(我认为应该不存在)分配给100。它没有给我任何编译器错误。大小仍然为4,但是当我在索引5处请求对象时,它给了我100。我很困惑……为什么它没有给我编译器错误?数组的大小不应该固定吗?

int main() { int arr[4]; arr[5] = 100; cout << sizeof(arr)/sizeof(arr[0]) << endl; cout << arr[5] << endl; return 0; }

Output: 
4
100
动态分配的内存也会发生同样的事情。

int main() { int * arr; arr = new int[4]; arr[5] = 10; cout << arr[5] << endl; //10 delete [] arr; return 0; }

c++ arrays indexing size
1个回答
0
投票
C ++之所以快速,是因为它不检查数组边界(以及许多其他事情)。作为开发人员,您应该知道自己在做什么-类似于没有安全保护的枪支。
© www.soinside.com 2019 - 2024. All rights reserved.