我有一个问题,我对我得到的输出有点困惑。有人可以帮我解决这个问题。
`
#include <stdio.h>
int main()
{
int *i = 5;
char *c = i[1];
printf("%c", *c);
}
`
它会正确编译而没有错误。如果它编译,它会在运行时给出分段错误。如果是,是因为哪一行。据我说, main() 的前两行是可以的。printf 语句给出了分段错误,但我无法证明它的合理性。这里 int *i 被初始化为一个常数。所以我可以将'i'指向其他位置但不能更改*i。我将 'i' 的第二个字节分配给 char *c,但这里我没有更改 *i。那么为什么打印 *c 会出现分段错误。这是我的看法。寻找更好的解释。