【发布时间】:2022-01-08 10:02:02
【问题描述】:
我试图了解编写 int arr[]; 在 C++ 中是否有效。举个例子,
int a[]; //is this valid?
extern int b[];//is this valid?
int (*ptrB)[]; //is this valid?
struct Name
{
int k[]; //is this valid?
};
void func()
{
ptrB++; //is this valid?
}
int a[10];
int b[10];
void bar()
{
ptrB = &b;//is this valid?
ptrB++; //is this valid?
}
int main()
{
int c[];//is this valid?
extern int d[]; //is this valid?
}
int c[10];
int d[10];
我在 SO 上阅读了一些 cmets,指出 int p[]; 不是有效的 C++。所以我想知道这在什么情况下有效/无效。为此我写了上面的 sn-p 并想通过这个例子来理解。
【问题讨论】:
-
“我已经阅读了一些关于 SO 的 cmets 声明 int p[]; 不是有效的 C++。”:这些很可能是专门参考
int p[]作为类的数据成员.这在 C 中被允许作为struct的最后一个成员,并在那里称为 灵活数组成员,但在 C++ 中是不允许的。一些编译器允许它在 C++ 模式下作为扩展(如果不使用严格的一致性标志)。
标签: c++ arrays c++11 incomplete-type