‘从some_type **到const some_type **’的转换无效

我有一个函数需要const some_type**作为参数( some_type是一个结构,函数需要一个指向这种类型数组的指针)。 我声明了some_type*类型的局部变量,并对其进行了初始化。 然后我将函数称为f(&some_array) ,编译器(gcc)说:

 error: invalid conversion from 'some_type**' to 'const some_type**' 

这有什么问题? 为什么我不能将变量转换为const?

请参阅: 为什么我不能将char **传递给期望const char **const char ** ? 来自comp.lang.c FAQ。

你有几个选择来解决jamesdlin在他的回答中概述的内容。

您可以使用中间变量。

 some_type const* const_some_array = some_array; f(&const_some_array); 

你可以改变f的参数。

 void f(some_type const* const* some_array); 

您可能需要指定一些更多的上下文,例如是将数据传入或传出(或两者都是?)函数的参数?

尝试制作变量const:

 some_type const *some_array = ....; 

这读作“some_array是指向const some_type的指针”。 代码无法修改指向的东西。 因此,在将变量const传递给函数之前,必须先声明它。

(编辑…)