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