3 回答
TA贡献1796条经验 获得超4个赞
后缀表达式,后面是方括号中的表达式 []
是数组对象的元素的订阅指定。下标运算符的定义 []
那是 E1[E2]
是相同的 (*((E1)+(E2)))
..因为适用于二进制文件的转换规则。 +
操作员,如果 E1
是数组对象(等价地,指向数组对象的初始元素的指针) E2
是整数, E1[E2]
指定 E2
-第四要素 E1
(从零算起)。
一元 &
运算符生成其操作数的地址。如果操作数具有“类型 类型‘,结果有类型’指向 类型“”如果操作数是一元数据的结果 *
运算符,则该运算符和 &
运算符被计算,结果就好像两者都被省略了一样,只是对运算符的约束仍然适用,并且结果不是lvalue。同样, 如果操作数是 []
运算符,既不是&运算符,也不是一元 *
,这是由 []
值计算,结果就好像 &
运算符被移除,并且 []
操作符更改为 +
操作者 ..否则,结果是指向其操作数指定的对象或函数的指针。
将具有整数类型的表达式添加到指针或从指针中减去时,结果具有指针操作数的类型。如果指针操作数指向数组对象的一个元素,并且数组足够大,则结果指向与原始元素偏移的元素,从而使结果数组元素和原始数组元素下标的差值等于整数表达式。换句话说,如果表达式 P
指向 i
-数组对象的第四个元素,表达式 (P)+N
(相当于, N+(P)
)和 (P)-N
(在哪里 N
有价值 n
)分别指向 i+n
-第四和 i−n
-数组对象的第四个元素,只要它们存在。另外,如果 P
指向数组对象的最后一个元素,即表达式。 (P)+1
指向数组对象的最后一个元素,如果表达式 Q
指向数组对象的最后一个元素,即表达式。 (Q)-1
指向数组对象的最后一个元素。如果指针操作数和结果都指向同一个数组对象的元素,或者指向数组对象的最后一个元素,则计算值不会产生溢出;否则,行为将未定义。如果结果指向数组对象的最后一个元素,则不应将其用作一元的操作数。 *
计算的运算符。
&array[5]
&*(array + 5)
(array+5)
TA贡献1842条经验 获得超21个赞
&array[5]
&array[5]
- 3 回答
- 0 关注
- 528 浏览
添加回答
举报