根据此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;
}
也不可能。
答案 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';
}
的值。