遍历c中的字符串数组

时间:2014-06-21 13:29:18

标签: c arrays string pointers

#include <stdio.h>

int main(int argc, const char *argv[])
{
    const char *s[] = {"a", "b", "c", NULL};
    const char **p = s;
    while (*p != NULL) {
        printf("string = %s\n", *p);
        (*p)++;
    }
    return 0;
}

我想遍历字符串数组并打印字符串util来了NULL sentinal。 然而,它通过信号SIGSEGV(地址边界错误)消息生成终止。 任何人都可以告诉我为什么?

2 个答案:

答案 0 :(得分:5)

(*p)++;

应该是:

p++;

这是你在做什么:

p --> * --> "a"
|     ^ incrementing this
checking this for null

你正在递增错误的指针。

答案 1 :(得分:3)

这一行:

(*p)++

您将增加p[0]

我想这不是你想要的。

将其替换为:

p++;

应该可以正常工作;)