4

有人可以在我的以下程序中向我解释一下我编写的以下程序是为了理解 int * const * var; 的含义;

#include "iostream"

using namespace std ;

int main(){

int a = 2;

int  * const   x = &a;
int * const * p = &x;

cout << **p;
return 0;
}

这个程序的输出是 2 。

我关注的一点是 p 是指向一个指向 int 的常量指针的指针,这就是我使用它的方式,但我一直在研究存储指针,你需要指向指针的指针。那么这个程序是如何工作的。我不应该用

int * const **P

因为这意味着 P 可能包含某个指针的地址。

我不知道为什么我的代码有效:)

4

4 回答 4

7
  1. int * const是一个“const指向一个”的指针int
  2. int * const *是一个“指向一个const指针的指针int”。

类型 2指向指针的指针。更具体地说,它是指向指针的const指针。太好了,因为您要指向 ( x) 的指针是const. 因为x是类型 1,所以获取它的地址会给你一个类型 2 的指针。

int * const **将是一个“指向指针的const指针int”。计算有多少“指针”。三!事实上,如果你p使用 with的地址,你会得到这样的结果&p

于 2013-05-23T18:08:44.523 回答
2
  • 要存储指针,您需要指向指针的指针

显然您认为该const指针在某种程度上不是指针。你错了。const只是不变性的指标。因此指向指针的const指针指向指针的指针

于 2013-05-23T18:45:39.383 回答
0

x是类型int* const并且假设x是类型 some ABC。所以指向的指针x被声明为ABC *p=&x;

这相当于int* const *p=&x;

于 2014-12-29T08:26:35.043 回答
-1

我认为这有助于直觉陈述。替换*withpointer并向后阅读语句。

于 2021-10-20T18:29:50.330 回答