使用未分配的内存进行调整

时间:2014-04-16 15:38:06

标签: c++ pointers pointer-arithmetic

我正在尝试做以下事情:

char c[] = "programming";
char *p;

*(c-1)='l';
*(c-2)='l';
*(c-3)='l';
*(c-4)='l';
*(c-5)='l';
p=&c[0];

cout<<*(c-1); 

仅当我省略l时,才打印p=&c[0];为什么会这样? pc之间显然没有任何关系。

1 个答案:

答案 0 :(得分:6)

您希望应该成为一种关系从根本上是有缺陷的。

这都是未定义的。 所以允许编译器进行许多优化,其他方式可以使用语言提供的灵活性,你不能任何这些东西的假设。

不要尝试。