为什么在传递参数时使用const会给我一个警告?

时间:2011-09-08 03:17:07

标签: c function pointers const

为什么这段代码会给我一个警告说:从不兼容的指针类型传递“test”的参数1?我知道这是关于char之前的const,但为什么呢?

void test(const int ** a)
{
}
int main()
{
    int a=0;
    int *b=&a;
    int **c=&b;
    test(c);
    return 0;
}

3 个答案:

答案 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?

不幸的是,接受的答案并不是很好,并没有解释原因。