我希望有人能用以下代码告诉我我是对还是错。
我正在尝试从函数mpg123_decoders()
打印返回的数据,该值为char**
(或“支持解码器的以NULL结尾的数组由CPU“)。
const char ** pdecoders;
pdecoders = mpg123_decoders();
do {
con_msg(MSG_BAD, "%s\n", *pdecoders);
pdecoders += 1;
} while(*pdecoders != NULL);
我不相信我的以下代码能正确完成,因为我确信有更多可用的解码器。
答案 0 :(得分:3)
您的代码示例对我来说并不坏。 如果根本没有任何数据,我会改变
do {
con_msg(MSG_BAD, "%s\n", *pdecoders);
pdecoders += 1;
} while(*pdecoders != NULL);
到
while(*pdecoders != NULL){
con_msg(MSG_BAD, "%s\n", *pdecoders);
pdecoders += 1;
}
但其余的看起来很不错。
虽然由于在C中处理const关键字的方式,它可能听起来有点令人困惑,但事实上它指向的数据是const并且根本没有改变,所以应该没有问题这一点。
尝试完全按原样阅读声明,你会发现它没有问题:
const char **pdecoders
读为“pdecoders是指向const char指针的指针”。
有问题的案例将改为
char** const pdecoders
因为这将成为“指向char的指针的const指针”