考虑以下代码:
int main() {
int (*p)[]; // pointer to array with unspecified bounds
int a[] = {1};
int b[] = {1,2};
p = &a; // works in C but not in C++
p = &b; // works in C but not in C++
return 0;
}
在纯C中,您可以将指针分配给任何维度数组的此类型地址。但是在C ++中,您不能这样做。我发现一种情况,编译器允许将值分配给这样的指针:
struct C
{
static int v[];
};
int main()
{
int (*p)[] = &C::v; // works in C++ if 'v' isn't defined (only declared)
return 0;
}
但是找不到使用这段代码的有用案例。
有没有人能提供一个(在C++中)指向未指定边界的数组的指针的有用示例?或者这只是从C遗留下来的痕迹?
std :: array
更好)。 - milleniumbugstruct C
带有静态变量有点误导人,你可以通过在命名空间范围内使用非成员int v[];
来表达同样的意思。 - M.M