我必须如何阅读下面的陈述? 我喜欢刷新我的C++技巧,并尝试编写一个小对象,所以我得到了这个表达式: int (*const vectors)[2];

我必须如何阅读下面的陈述? 我喜欢刷新我的C++技巧,并尝试编写一个小对象,所以我得到了这个表达式: int (*const vectors)[2];,c++,c,C++,C,我怎么读呢?我知道它声明了一个指向二维int数组的常量指针 谢谢大家! 在声明中,前缀*和后缀[]都是修改标识符(或声明符)的运算符 问题是,[]比*具有更高的优先级,因此如果不使用paren,则将向量声明为int*const的数组大小2 paren需要使向量成为指向int[2]的常量指针您应该使用螺旋规则来解析int(*const vectors)[2]: 从标识符向量开始 处理其右侧的一元运算符,从左到右,一元运算符前面没有 从右向左处理其左侧的限定符和一元运算符: const表示vec

我怎么读呢?我知道它声明了一个指向二维int数组的常量指针


谢谢大家!

在声明中,前缀
*
和后缀
[]
都是修改标识符(或声明符)的运算符

问题是,
[]
*
具有更高的优先级,因此如果不使用paren,则将
向量
声明为
int*const
的数组大小2


paren需要使
向量
成为指向
int[2]
的常量指针

您应该使用螺旋规则来解析
int(*const vectors)[2]

  • 从标识符
    向量开始
  • 处理其右侧的一元运算符,从左到右,一元运算符前面没有
  • 从右向左处理其左侧的限定符和一元运算符:
    • const
      表示
      vectors
      为常量,不能修改其值
    • *
      表示指针:
      向量
      是一个常量指针
  • 跳过两边的括号,然后重新开始:
    • [2]
      表示2的数组
      vector
      是指向一个或多个2的数组的常量指针
    • 最后:
      int
      给出了内部元素类型
vector
是指向一个或多个2
int
数组的常量指针

因此,
vector
可以指向2
int
的数组。例如,可以使用
vector
以以下方式操纵二维矩阵:

// allocate a 2D identity matrix:
int (*const vectors)[2] = malloc(sizeof(int[2][2]);
vectors[0][0] = vectors[1][1] = 1;
vectors[1][0] = vectors[0][1] = 0;
但是请注意,
向量
必须初始化,而不是赋值,因为它被定义为
常量
。如果打算让
向量
指向不应修改的2D矩阵,例如作为函数参数,则声明应为:

void print_matrix(const int (*vectors)[2]);


最后,在C和C++中,<>代码> const 的含义存在着细微的差别,但是上面描述的解析方法适用于两种语言。

如果你知道它的意思,那么在我看来你读的正确。所以我不明白你在问什么。请你澄清一下好吗?问题是,我如何处理数组括号。通常的做法是从左到右,但这些括号会让我的想法大打折扣@谢谢,这是一个指向一个数组和两个整数的指针。您无法从类型中判断指针是否指向数组元素–在本例中,您只能希望复数名称是正确的。-胚胎C
void print_matrix(int const (*vectors)[2]);