将char **传递给期望const char **的函数

时间:2016-06-02 17:37:47

标签: c pointers const

根据此question, from c-faq.com,如果没有演员表,则无法将char **分配给const char **。链接上的解释非常合理且易于理解。实际上,这样做会违反不修改指向数据的承诺。

我无法理解为什么将它传递到函数是违法的?

我看不出为什么会这样

void 
function(const char **pointer)
{
    // Prevent modifying pointer
}

int
main(void)
{
    char **pointer;
    // Initialize pointer
    function(pointer);
    return 0;
}

也不可能。

1 个答案:

答案 0 :(得分:2)

不允许出于同样的原因而不允许分配。要修改链接中的示例:

[table1, table2, table3, table4]

如果允许标记的行,则允许您更改常量变量const char c = 'x'; void function(const char **p2) { *p2 = &c; } int main() { char *p1; function(&p1); //********* *p1 = 'X'; } 的值。