C++中长度为0的数组是不允许的,如果不给长度,编译器不会给数组分配空间,使用时会出现难以预料的错误。
一个典型的错误示例
#include <iostream>
#include <algorithm>
using namespace std;
class test
{
public:
int scores[];
int length;
test()
{
cout<<scores<<endl;
cout<<&length<<endl;
}
};
int main()
{
test t;
system("PAUSE");
return 0;
}
运行后发现,数组scores和变量length的地址相同,那么score[0]和length这两个变量访问和赋值的时候会出现互相覆盖的问题
我的运行结果:
0x68feec
0x68feec