【C++】关于数组是否可以使用负数下标

我们知道,数组的第一个元素下标是 0。数组的范围也就是从array[0] array[size-1]。 但实际上C++支持正负下标负下标必须在数组边界内;否则结果不可预知。 以下代码显示了正数组和负数组下标:

C++代码

#include   
using namespace std;  
  
int main() {  
    int intArray[1024];  
    for (int i = 0, j = 0; i < 1024; i++)  
    {  
        intArray[i] = j++;  
    }    
    cout << intArray[512] << endl;   // 512    
    int *midArray = &intArray[512];  // 指向了数组中间的数据  
    cout << midArray[-256] << endl;  // 256  
    cout << intArray[-256] << endl;  // 得到不可预知的结果  
}  

最后一行中的负下标可能产生运行时错误,因为它在内存中指向比数组的原点低 256 个字节的地址。 指针midArray会初始化为intArray的中点;因此可以对其使用正数组和负数组索引。数组下标错误不会产生编译时错误,但它们会产生不可预知的结果。

你可能感兴趣的:(C++,c++)