【发布时间】:2016-08-02 05:31:19
【问题描述】:
我刚试过这段代码:
int i = 33;
int * pi = &i;
cout << "i: " << *pi << endl;
cout << "i: " << pi[0] << endl;
两行返回相同的内容。
基本上,如果我得到任何指针的索引为零,我将在指针的位置获得正确类型的值。这和取消引用不是一回事吗?
每次在 C++ 中取消引用指针时,获取索引为零是否也有效?我并不是建议任何人实际上应该这样做,但我认为它会工作。不会吧?
【问题讨论】:
-
我应该这么认为,但我不确定。释放语言律师。
-
这在 C 中是正确的。如果你不重载运算符,在 C++ 中也是如此。
-
当 pi=&i 让我回来使用 *pi 。你有 *pi = &i ,这是双重间接。
-
@ArifBurhan - 不,
int *pi = &i;是pi的定义,作为指向 int 的指针。它还用i的地址初始化pi。
标签: c++ pointers dereference