将char *转换为char * const *
请原谅我这个问题的基本“问题”.我有时会迷上指针.我有一个char *但我需要将它转换为char * const *才能在fts()函数中正确使用它.我怎么做? 谢谢 最佳答案
您不应该进行这种转换,因为类型不兼容.
关于指针和指针的指针 char *是指向字符串的指针,而char **是指向字符串的指针. (const是奖金).这可能意味着您应该提供一个字符串数组,而不是提供字符串. 这两件事显然是不相容的.不要将它们与石膏混合. 关于fts_ * API 要找到问题的解决方案,我们需要阅读fts_ *函数API(例如,在http://linux.die.net/man/3/fts),我看到:
使用char * const *参数path_argv,描述说明:
这证实了fts_open函数确实是一个路径集合,而不是唯一的路径. 所以我想你需要传递给它的东西如下:
关于const C和C中的类型从右到左阅读.所以如果你有: > char *:指向char的指针 这可能会让人感到困惑,但是一旦你对指针更熟悉,那么从右到左的顺序读取它们就会很清楚(如果用C或C编程,你想熟悉指针). 如果我们回到最初的例子(使用C99在gcc上发送一堆警告):
我使用了API,您可以通过两种方式将其提供给您:
要么:
编辑 在阅读其他答案之后,只有其中两个(mkb和moshbear)避免“只是转换数据”错误. 在我自己的回答中,我忘记了数组的NULL终止符(但后来我不知道Linux API,也不知道fts_ *类的函数,所以…) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |