我有动态分配存储器的函数将字符串存储到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 ***
吗?这里有一些明显的东西,我不理解。
答案 0 :(得分:1)
正如我所知,你的数组不包含指向字符串文字的指针,而是包含字符串文字的副本。否则strcpy用于什么?因此,您可以从数组(或相应的指针)声明中删除const限定符。考虑到在C字符串文字中有非常数数组的类型。