【发布时间】:2021-04-04 04:03:10
【问题描述】:
我有这个代码:
int *array_ptr{nullptr};
array_ptr = new int[10]; // allocate array on the heap
for(int i=0; i<10; i++){
array_ptr[i] = i;
std::cout<<array_ptr[i]<<std::endl;
}
delete [] array_ptr; // deletes allocated space
据我了解,int *array_ptr 显示实际值,而没有取消引用运算符的int array_ptr 显示内存中的地址。
那么,array_ptr[i] 怎么会显示 0 1 2 3 4 ... 10,而不是显示地址 1000、1004、1008...等。 (地址编造)。
【问题讨论】:
-
因为你要取消引用它:
array_ptr[i] -
它没有被解引用,array_ptr指向一个地址,当你解引用*array_ptr应该显示一个实际值
-
array_ptr[i]等同于*(array_ptr + i)。如果不是解除引用,你会怎么称呼它? -
您不打印指针
array_ptr,而是打印指向array_ptr[i]的数组中的一个元素。 -
太棒了,现在我明白了,非常感谢
标签: c++ arrays c++11 pointers c++17