指针地址和指针指向的变量地址

时间:2020-09-12 07:55:48

标签: c++ pointers char-pointer

我是C ++的新手,我的问题似乎很基本,但是您的回答可以帮助我和帮助他人。

我创建了char指针myPointer1和myPointer2这样的

const char *myPointer1 = "Hallo";
const char* myPointer2 = myPointer;

我认为指针存储了它们指向的变量的地址。在这种情况下,我们只有一个变量“ Hallo”,然后两个指针都应指向相同的地址。 但是当我打印时:

cout << &myPointer1 << endl << endl;
cout << &myPointer2 << endl << endl;

结果是两种不同的地址:

009EFC00
009EFBE8

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您正在打印指针的地址,而不是指针指向的地址。

std::cout << myPointer << std::endl;

这将打印指针指向的地址。

由于char*在传递给std::cout时被视为字符串,因此它将打印Hallo

如果您要打印地址本身,可以通过将其转换为const void*并打印来实现。

#include <iostream>

int main() {
  const char *myPointer1 = "Hallo";
  const char* myPointer2 = myPointer1;

  std::cout << static_cast<const void*>(myPointer1) << std::endl;
  std::cout << static_cast<const void*>(myPointer2) << std::endl;
}