2

我希望有人能够通过我的以下代码告诉我我是对还是错。

我正在尝试从函数打印返回的数据,该数据mpg123_decoders()具有值char**“CPU 支持的以 NULL 结尾的解码器数组”)。

const char ** pdecoders;
pdecoders = mpg123_decoders();
do {
    con_msg(MSG_BAD, "%s\n", *pdecoders);
    pdecoders += 1;
} while(*pdecoders != NULL);

我不相信我的以下代码可以正确执行,因为我确信有更多可用的解码器。

4

1 回答 1

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;
}

但其余的看起来还不错。

尽管由于 const 关键字在 C 中的处理方式首先听起来有点令人困惑,但实际上指向的数据是 const 并且根本没有改变,所以应该没有问题。

尝试完全按照给出的方式阅读声明,您会发现它没有问题:

const char **pdecoders 

读作“pdecoders 是指向 const char 的指针的指针”。

有问题的情况改为

char** const pdecoders

因为这将成为“指向 char 指针的 const 指针”

于 2013-03-01T18:54:54.070 回答