如何在c/c++中获取指针地址
我有下面的代码。
int a =10;
int *p = &a;
那么如何获取指针p
的地址呢?现在我想打印p的地址,我该怎么做?
打印(“%s”,?)我传递给什么?
发布于 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;
发布于 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);
发布于 2014-03-07 20:27:07
&a
提供a
的地址- &p
提供p
的地址。
int * * p_to_p = &p;
https://stackoverflow.com/questions/22250067
复制相似问题