首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在c/c++中获取指针的地址?

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

Stack Overflow用户
提问于 2014-03-07 20:26:12
回答 11查看 136.1K关注 0票数 41

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

我有下面的代码。

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

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

打印(“%s”,?)我传递给什么?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2014-03-07 20:27:40

要获取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;
票数 90
EN

Stack Overflow用户

发布于 2014-03-07 20:29:18

int a = 10;

要获得a的地址,您需要这样做:&a (a的地址),它返回一个int* (指向int的指针)

int *p = &a;

然后将a的地址存储在int*类型的p中。

最后,如果你做&p,你会得到p的地址,它的类型是int**,也就是指向&p的指针:

int** p_ptr = &p;

刚刚看到你的编辑:

要打印出指针的地址,您需要将其转换为:

printf("address of pointer is: 0x%0X\n", (unsigned)&p);
printf("address of pointer to pointer is: 0x%0X\n", (unsigned)&p_ptr);

或者,如果您的printf支持它,请使用%p

printf("address of pointer is: %p\n", p);
printf("address of pointer to pointer is: %p\n", p_ptr);
票数 23
EN

Stack Overflow用户

发布于 2014-03-07 20:27:07

&a提供a的地址- &p提供p的地址。

int * * p_to_p = &p;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22250067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档