如何创建指向二维字符数组的指针?代码类型不匹配报错求解
错误原因与修复方案
错误原因
- 类型不匹配:你定义的
d1是二维数组,每个元素是指向const char的指针,实际类型为const char *[9][2];而你声明的ptr是指向“包含2个char的数组”的指针(类型char (*)[2]),两者的元素类型完全不兼容。 - const限定丢失:
d1中的字符串字面量带有const属性,不能用非const指针指向,否则会违反类型安全规则,编译器会直接报错拦截这种操作。
修复方法
把指针的类型改成指向包含2个const char*的数组,也就是const char *(*ptr)[2],这样类型和d1完全匹配,同时保留了const限定:
const char * d1 [][2] = { { "murderer", "termination specialist" }, { "failure", "non-traditional success" }, { "specialist", "person with certified level of knowledge" }, { "dumb", "cerebrally challenged" }, { "teacher", "voluntary knowledge conveyor" }, { "evil", "nicenest deprived" }, { "incorrect answer", "alternative answer" }, { "student", "client" }, { NULL, NULL } }; const char *(*ptr)[2] = d1;
内容的提问来源于stack exchange,提问作者Matouš Kovář
相关产品推荐
相关产品推荐

