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

Pointer address and address of variables to which pointer points

我是 c++ 的新手,我的问题可能看起来很基础,但你的回答可以帮助我和其他人。

我创建了 char 指针 myPointer1 和 myPointer2 所以

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

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

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

结果是两个不同的地址:

009EFC00
009EFBE8

有人能帮忙吗?

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

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;
}