指针阵列打印值

  • 本文关键字:打印 阵列 指针 c++
  • 更新时间 :
  • 英文 :


我有一个有关此行的问问题: cout << *ptr[i] << endl;。如果我像&ptr[i]更改,结果是其地址0x7ffef7402a40

我的问题是:我该怎么做才能从此cout << &ptr[i] << endl;获取价值,而不是地址?

  const int MAX = 3;
  int main () {
  int  var[MAX] = {10, 100, 500};
  int *ptr[MAX];
  for (int i = 0; i < MAX; i++) {
  ptr[i] = &var[i]; // assign the address of integer.
  }
   for (int i = 0; i < MAX; i++) {
   cout << "Value of var[" << i << "] = ";
   cout << *ptr[i] << endl;
   }
   return 0;
  } 

结果是:

  Value of var[0] = 10
  Value of var[1] = 100
  Value of var[2] = 500

我该怎么做才能从这个cout&lt;&lt;&amp; ptr [i]&lt;&lt;endl;,而不是地址?

&是操作员的地址。它将对象的地址作为指针返回。您可以使用DEREFERCE操作员来取消指针以在该地址获取对象:

*&ptr[i]

但是,由于数组的元素本身就是指针 - 即地址 - 您仍然会在上面的代码上获得一个地址。这次不是指针存储的地址,而是指针的值,即指向对象的地址。要获取这些指针指向的对象,您可以再次解除:

**&ptr[i]

当然,这是毫无意义的,因为您不能首先使用操作员地址:

*ptr[i]

如您所见,取消和接收地址是逆操作,并且连续的逆操作相互取消。

*用于放置一个地址(即访问存储在此地址的值(。和&用于读取变量的地址。

so

  • ptr[i]是变量的地址,

  • &ptr[i]给出了ptr[i]存储在内存中的地址

  • *ptr[i]给出地址为" *ptr[i]"的值,即var[i]

最新更新