6

这是一个新手 C++ 问题。以下两种构造有什么区别?

1. const int* const* const x
2. const int**

我如何阅读这些结构?

4

3 回答 3

8

我如何阅读这些结构?

向后阅读它们并将其阅读*为“指向”。

const int* const* const

是一个指向整数常量的常量指针。

const int**

是一个指向整数常量的指针。

于 2012-11-23T23:20:48.110 回答
2

如果您以正确的方式对事物进行分组,它会变得容易一些。例如,*const真的是一个单位,意思是“const 指针”(您可以在const这里将 读作下标:)。我会把它写成:*const

const int *const *const p1; // p1 is a const pointer to const pointer to const int
const int **p2; // p2 is a pointer to pointer to const int

还要记住,声明从被声明的标识符开始读为“由内而外”。

于 2012-11-23T23:27:44.587 回答
2

有一个工具对破译声明很有用/很有趣:http: //cdecl.ridiculousfish.com/

在您的情况下,它报告: const int* const* const x=> 将 x 声明为指向 const int 的 const 指针 const int** x=> 将 x 声明为指向 const int 的指针

于 2012-11-24T02:41:10.940 回答