如何在 c/c 中获取指针的地址?

新手上路,请多包涵

如何在 c/c++ 中获取指针的地址?

例如:我有以下代码。

 int a =10;
int *p = &a;

那么如何获得指针地址 p ?现在我想打印p的地址,我该怎么办?

print(“%s”,???) 我传递给 ???.

原文由 Trung Nguyen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

要获取 p 的地址,请执行以下操作:

 int **pp = &p;

你可以继续:

 int ***ppp = &pp;
int ****pppp = &ppp;
...

或者,仅在 C++11 中,您可以执行以下操作:

 auto pp = std::addressof(p);

要在 C 中打印地址,大多数编译器都支持 %p ,因此您可以简单地执行以下操作:

 printf("addr: %p", pp);

否则你需要转换它(假设是 32 位平台)

 printf("addr: 0x%u", (unsigned)pp);

在 C++ 中,您可以执行以下操作:

 cout << "addr: " << pp;

原文由 Loghorn 发布,翻译遵循 CC BY-SA 3.0 许可协议

基于上述答案,如果您将指针作为私有变量,那么您可以像这样创建一个 getter 函数:

 private int* p;

public int** GetP() { return &p; }

然后,当您使用它时,您会创建一个指向包含它的类的指针:

 DummyClass* p_dummyClass = new DummyClass;

然后在您的用例场景中:

 p_dummyClass -> GetP();

(不要忘记解除分配)

原文由 Vallisneria 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题