#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(地址边界错误)消息生成终止。 任何人都可以告诉我为什么?
答案 0 :(得分:5)
(*p)++;
应该是:
p++;
这是你在做什么:
p --> * --> "a"
| ^ incrementing this
checking this for null
你正在递增错误的指针。
答案 1 :(得分:3)
这一行:
(*p)++
您将增加p[0]
。
我想这不是你想要的。
将其替换为:
p++;
应该可以正常工作;)