char **与const char * const *不兼容

时间:2017-04-07 19:28:13

标签: c pointers const

我有一个带有以下声明的函数:

static void FindStrColumnHeaderSpacing(const char * const *str);

当我使用char**变量调用它时,gmake抛出:

warning: passing argument 1 of 'FindStrColumnHeaderSpacing' from incompatible pointer type
inq.c:1402:13: note: expected 'const char * const*' but argument is of type 'char **'

现在,我的理解一直是将非const数据的指针作为参数发送到函数"升级"指针的数据变为常量,没有问题。这仅适用于第一个(或最后一个)间接层吗?

在这种情况下,简单地接受char**会有什么问题?毕竟,const char * const *参数是一个承诺,函数不会改变指针指向的内存块,也不会改变存储在该内存中的实际数据。而且,即使函数违背了这个承诺,传递的变量也完全是非常量的,所以它甚至不会关心。

0 个答案:

没有答案