1. array[5] =====> array + 5,从 array 的地址开始向后挪5个,array[0] ======> array + 0 = array
2. msvc 编译器和 mingw 编译器对数组的处理方式不同,此段代码 msvc 编译无法通过,因为数组的长度是个变量,但是 mingw 编译可以通过,且无其他错误
#include <stdio.h>
#define ARRAY_SIZE 5
int main(){
int value = 5;
int array_size[value];
for (int i = 0; i < value; ++i) {
array_size[i] = i;
printf("%d ",array_size[i]); // 0 1 2 3 4
}
return 0;
}
这是因为 msvc 兼容 C90的缘故,变长数组的支持是从 C99 开始的,而 gcc 编译器专门对变长数组做了处理,所以一直都支持
3. 同样,const 变量,msvc 无法通过, gcc 可以编译。但是 C++ 不同,C++ 可以运行,C++ 将 const 定义的变量当做常量看待
const int Ksize = 5;
int array_const[Ksize]; // msvc报错: 应输入常量表达式; mingw: 成功运行