为什么这段代码会给我一个警告说:从不兼容的指针类型传递“test”的参数1?我知道这是关于char之前的const,但为什么呢?
void test(const int ** a)
{
}
int main()
{
int a=0;
int *b=&a;
int **c=&b;
test(c);
return 0;
}
答案 0 :(得分:5)
您无法将int **
分配给const int **
,因为如果您这样做,后一个指针将允许您为int *
变量提供{{1}的地址object:
const int
答案 1 :(得分:2)
const int **
是一个指向const int指针的指针,但是你指向一个指向int的指针
我想你可能想用int ** const
声明测试,它说指针是const而不是值。
注意:我认为这应该放在关于C中指针的每个问题中:cdecl.org是一种非常好的方式来提供一个人类可读的表达
答案 2 :(得分:0)
这个问题的第二个答案可能会有所帮助:
Why can't I convert 'char**' to a 'const char* const*' in C?
不幸的是,接受的答案并不是很好,并没有解释原因。