我正在尝试做以下事情:
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];
为什么会这样? p
和c
之间显然没有任何关系。
答案 0 :(得分:6)
您希望应该成为一种关系从根本上是有缺陷的。
这都是未定义的。 所以允许编译器进行许多优化,其他方式可以使用语言提供的灵活性,你不能任何这些东西的假设。
不要尝试。