C语言数组单元

数组元素与存储单元的对应关系
举例:(32位系统,小端存储)
int a[3] = {0x12345678, 0x87654321, 0x56789123};
首先,给数组分配其所需空间 (分配12个字节)!
然后,在此空间最低的地址存储第一个元素0x12345678 再存储0x87654321,最后存储 0x56789123!
最后解释一下每个元素的存储:存储元素时,顺序是按字节从低到高
即:对于0x12345678 先存储78 最后存储12

char a[20];
int *ptr=(int *)a; //强制类型转换并不会改变 a 的类型
ptr++;
在上例中,指针 ptr 的类型是 int*,它指向的类型是 int,它被初始化 为指向整型变量 a。
接下来的第 3 句中,指针 ptr 被加了 1,编译器是这样 处理的:**它把指针 ptr 的值加上了 sizeof(int),
在 32 位程序中,是被加上 了 4,因为在 32 位程序中,int4 个字节。由于地址是用字节做单位的,
故 ptr 所指向的地址由原来的变量 a 的地址向高地址方向增加了 4 个字节。**
由于 char 类型的长度是一个字节, 所以,原来 ptr 是指向数组 a 的**0 号 单元**开始的四个字节,
此时指向了数组 a 中从**4 号单元**开始的四个字节。```


```c
int array[20]={0};
int *ptr=array;
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++} 这个例子将整型数组中各个单元的值加 1。由于每次循环都将指针 ptr
加 1 个单元,所以每次循环都能访问数组的下一个单元。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值