【问题标题】:Why is the pointer displaying the value and not the address? [closed]为什么指针显示的是值而不是地址? [关闭]
【发布时间】: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


【解决方案1】:

指针的意思是“指示地址中的值是多少?”

如果您想查看变量的寻址,您必须使用 & 运算符。

在 for 循环中试试这个

std::cout << &array_ptr[i] << std::endl;

【讨论】:

  • 或者干脆array_ptr + i,这样更容易理解。
  • 是的,你是对的。它也有效。 @πάνταῥεῖ
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 2020-09-09
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多