2.5 数组分配与访问

发布时间 2023-05-21 19:08:57作者: C~A

基本原则

对于数据类型T和整型常数N,声明如下:

T A[N];

起始位置表示为xa。这个声明有两个效果。首先,它在内存中分配一个L·N字节的连续区域,这里L是数据类型T的大小(单位为字节)。其次,它引入了标识符A,可以用A来作为指向数组开头的指针,这个指针的值就是xa。可以用0~N-1的整数索引来访问该数组元素。数组元素i会被存放在地址为xa+L·i的地方。 

指针运算

C语言允许对指针进行运算,而计算出来的值会根据该指针引用的数据类型的大小进行伸缩。也就是说,如果p是一个指向类型为T的数据的指针,p的值为xp,那么表达式p+i的值为xp+L·i,这里L是数据类型T的大小。

单操作数操作符‘&’和‘*’可以产生指针和间接引用指针。也就是,对于一个表示某个对象的表达式Expr,&Expr是给出该对象地址的一个指针。对于一个表示地址的表达式AExpr,*AExpr给出该地址处的值。因此,表达式Expr与*&Expr是等价的。可以对数组和指针应用数组下标操作。数组引用A[i]等同于表达式*(A+ i)。它计算第i个数组元素的地址,然后访问这个内存位置。