提问人:VincentSchaerl 提问时间:3/21/2023 更新时间:3/21/2023 访问量:48
尝试将指针的二维数组作为 const 传递时的编译器错误
Compiler error when trying to pass two-dimensional array of pointers as const
问:
我想将指针的二维数组传递给函数,使函数既不能通过取消引用这些指针来更改数组指针指向的整数值,也不能更改指针本身,也不能使数组本身变为合理(请参阅我的最后一个问题):
void test(int const * const (* const array)[2]) {}
int main()
{
int* array[2][2];
test(array);
}
这是行不通的。我在 Windows 上使用 Visual Studio,第 6 行中的函数调用导致生成错误(错误代码 C2664):
'void test(const int *const (*const [2])': 无法将参数 1 从 'int *[2][2]' 转换为 'const int *const (*const )[2]'
奇怪的是,这两个工作得很好:
void test(int const * const (* const array)) {}
int main()
{
int* array[2];
test(array);
}
void test(int* const (* const array)[2]) {}
int main()
{
int* array[2][2];
test(array);
}
这里有什么问题?
非常感谢帮助。谢谢。
答: 暂无答案
评论
std::array