一维数组
后跟用方括号 ([ ]
) 括起的表达式的后缀表达式是数组对象元素的下标表示形式。 下标表达式表示地址的值,该地址在表示为以下形式时位于超出 postfix-expression
的 expression
位置
postfix-expression
[
expression
]
通常,postfix-expression
表示的值是一个指针值(如数组标识符),而 expression
是一个整数值。 但是,从语法上来说,只需要一个表达式是指针类型,另一个表达式是整型类型。 整数值可以位于 postfix-expression
位置,指针值可以位于 expression
的方括号中或“下标”位置。 例如,以下代码是合法的:
// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
ptr = a;
sum = 4[ptr];
}
下标表达式通常用于引用数组元素,但你可以将下标应用于任何指针。 无论值的顺序如何,expression
都必须用方括号 ([ ]
) 括起来。
通过将整数值添加到指针值,然后将间接寻址运算符 (*
) 应用于结果,可以计算下标表达式。 (有关间接寻址运算符的讨论,请参阅间接寻址运算符和 Address-of 运算符。)实际上,对于一维数组,假定 a
是指针,b
是整数,则以下四个表达式等效:
a[b]
*(a + b)
*(b + a)
b[a]
相加运算符中提供了加法运算符的转换规则)。 若要将整型值转换为地址偏移量,请将其乘以指针寻址的类型长度。
例如,假定标识符 line
引用 int
值的数组。 以下过程用于计算下标表达式 line[ i ]
:
将整数值
i
乘以定义为int
项的长度的字节数。i
的转换值表示i
int
位置。此转换值将添加到原始指针值 (
line
) 以生成从line
偏移i
int
个位置的地址。间接寻址运算符将应用于此新地址。 结果是位于该位置(直观地说,就是
line [ i ]
)的数组元素的值。
下标表达式 line[0]
表示行的第一个元素的值,因为 line
表示的地址的偏移量为 0。 同样,表达式(如 line[5]
)引用了从行偏移 5 个位置的元素,或数组的第 6 个元素。
请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈