数组分配和访问 读深入理解计算机系统

T A[N];

它在存储器中分配了L×N字节的连续区域,这里L是数据类型T的大小(单位为字节)。我们用XA来表示起始位置。其次,它引入了标识符A,A可以用来作为指向数组开头的指针。这个指针的值就是XA。可以用0~N-1之间的整数索引来访问数组元素。数组元素i的存放地址XA+L*i.


指针运算

如果p是一个指向类型T的数据的指针,p的值为Xp,表达式p+i的值为Xp+L*i,这里L是数据类型T的大小。

单操作数的操作符&和×可以产生指针和间接引用指针。也就是,对于一个表示某个对象的表达式Expr,&Expr表示一个地址。对于表示一个地址的表达式Addr-Expr,×Addr-Expr表示该地址中的值。因此,表达式Expr与×&Expr是等价的。可以对数组和指针应用数组下标操作,如数组引用A[i]与表达式×(A+i)是一样的。它计算地i个数组元素的地址,然后访问这个存储器位置。


嵌套数组

int A[4][3];



结构

C的struct声明创建一个数据类型,将可能不同类型的对象聚合到一个对象中。结构的各个组成部分是用名字来引用的。结构的实现类似于数组的实现,因为结构的所有组成部分都存放在存储器中连续的区域内,而指向结构的指针就是结构第一个字节的地址。编译器保存关于每个结构类型的信息,指示每个域的字节偏移,它以这些偏移作为存储器引用指令中的位移,从而产生对结构元素的引用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值