【发布时间】:2014-07-29 05:24:11
【问题描述】:
我在执行这段代码 sn-p 时观察到一个奇怪的行为
#include <stdio.h>
void main()
{
char *a[10] = {"hi", "hello", "how"};
int i = 0, j = 0;
for (i = 0;i < 10; i++)
printf("%s\n", a[i]);
}
输出:
hi
hello
how
Segmentation fault
但是,如果我在 printf 语句中用空格字符替换 '\n' 字符,则没有 seg。故障来了
hi hello how (null) (null) (null) (null) (null) (null) (null)
我在 Ubuntu 上使用 gcc v4.4.3。 换行符如何导致段。 printf 出错了?
【问题讨论】:
-
我不明白这怎么能被描述为“奇怪”...
-
for (i = 0;i < 3; i++)怎么样,因为你有一个指向 3 数组的指针?