c - 遍历c中的字符串数组

标签 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 标记。 但是,它会生成一条由信号 SIGSEGV(地址边界错误)终止的消息。 谁能告诉我为什么?

最佳答案

(*p)++;

应该是:

p++;

这就是你正在做的事情:

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

您递增了错误的指针。

关于c - 遍历c中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342062/

相关文章:

php - 从字符串中删除特定单词

java - 更改数组的输出

c - C 中随机名称按字母顺序排序

python - 如何舍入向量数组的值

java - 在 if 语句中检查数组的两个返回值

c++ - 如何按值对数组进行排序(排序)? *有一个转折*

c++ - 在 C++ 中解析文件

通过循环计算无法正常工作的行数

c - fork 等待 - 如何等待所有孙子完成

c - 我如何列出 0 和 n 之间的数字,其中数字与其正因子之和将构成一个完美的平方?