C 在动态二维数组中存储字符串文字

C storing string literals inside dynamic 2D arrays

我有动态分配内存以将字符串存储到 char ***(2D 字符串数组或 3D 字符数组)的函数。

后来我想如果我把它们存储为字符串文字会更好,所以我把我的数组改成了const char ***。但是,当我使用 strcpy()free().

时,这会给我带来错误
error: passing argument 1 of 'strcpy' discards 'const' qualifier from pointer target type

我知道参数 strcpy()free() take 的类型是 char *void *,但我也读到存储字符串变成 const char * 而不是 char *

如果字符串文字不能用于 strcpy()free() 等操作,我该如何使用它?我应该将它保留为 char *** 而不是 const char *** 吗?这里有一些明显的东西我不明白。

据我了解,您的数组不包含指向字符串文字的指针,而是包含字符串文字的副本。否则 strcpy 有什么用?因此,您可以从数组(或相应的指针)声明中删除 const 限定符。考虑到在 C 中,字符串文字具有非常量数组的类型。