Hra*_*ant 2 c++ arrays pointers
当我尝试用g ++编译以下代码时:
int main()
{
int a[3] = {0, 1, 2};
int (* p)[] = &a;
}
Run Code Online (Sandbox Code Playgroud)
编译器给出以下错误:"无法在初始化中将'int()[3]'转换为'int()[]'.为什么不能将int()[3]转换为int()[]?如果不可能,那么应该如何初始化'int(*)[]'类型的变量?
因为您必须指定指针所指向的数组的长度.它应该是这样的:
int (* p)[3] = &a;
int (*p)[]这意味着你p是一个指向数组的指针.问题是编译器必须在编译时知道是怎么长的指针指向数组,所以你必须指定在括号内的值- > int (*p)[x]哪里x 是在编译时已知.