通过指向指针数组的指针递增

时间:2013-03-01 18:07:54

标签: c pointers

我希望有人能用以下代码告诉我我是对还是错。

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

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

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

1 个答案:

答案 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指针”