C将字符串文字存储在动态2D数组中

时间:2016-12-02 18:10:26

标签: c string-literals

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

我后来认为如果将它们存储为字符串文字会更好,所以我将数组更改为const char ***。但是,当我使用strcpy()free()时,这会给我带来错误。

error: passing argument 1 of 'strcpy' discards 'const' qualifier from pointer target type

我了解参数strcpy()free()采用char *void *类型,但我还读到将字符串存储到const char *代替char *

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

1 个答案:

答案 0 :(得分:1)

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