打印
[DSP编程]

深入学习一下数组

[复制链接]
362|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-10-23 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
深入学习一下数组

1、从内存角度来讲:数组变量就是一次分配多个变量,而且这些变量的地址是连续的,也就是存放这些变量的存储

单元是依次相连接的。而且这多个变量必须单独访问,不可以一起访问的。因为他们的地址彼此相连,所以使用指针

访问这些变量就很容易了。

2、从编译器角度来讲:数组变量也是变量,和普通变量和指针变量并没有什么本质不同。变量的本质就是一个地址,

这个地址在编译器中决定具体数值,具体数值和变量名绑定,变量类型决定了这个地址的延续长度。

3、数组中几个关键符号(a  a[0]  &a  &a[0])的理解

(1)、a就是数组名。a做左值时表示整个数组的所有空间(10 * 4 = 40字节),又因为C语言规定数组操作时要独

立单个操作,不能整体操作数组,所以a不能做左值;a做右值时表示数组首元素(数组的第一个元素,也就是a[0])

的首地址(首地址就是起始地址,就是4个字节中最开始第一个字节的地址)。a做右值等同于&a[0];

(2)、a[0]表示数组的首元素,也就是数组的第0个元素。做左值时表示数组第0个元素对应的内存空间(连续4字节);

做右值时表示数组第0个元素的值(也就是数组第0个元素对应的内存空间中存储的那个数)

(3)、&a就是数组名取地址,字面意思就是数组的地址。&a不能做左值(&a实质是一个常量,不是变量,因此不可以

赋值,所以自然不能做左值。);&a做右值时表示整个数组的首地址。

(4)、&a[0]字面意思就是数组第0个元素的首地址([]的优先级要高于&,所以a先和[]结合再取地址)。做左值时表示

数组首元素对应的内存空间,做右值时表示数组首元素的地址(首地址就是起始地址,就是4个字节中最开始第一个字

节的地址)。

做右值时&a[0]等同于a。

总结:

(1)、&a和a做右值时的区别:&a是整个数组的首地址,而a是数组首元素的首地址。这两个在数字上是相等的,但是

意义不相同。意义不同就会导致他们在参与运算的时候有不同的表现。

(2)、a和&a[0]做右值时意义和数值完全相同,完全可以相互替代。

(3)、&a是常量,不能做左值。

(4)、a做左值代表整个数组所有空间,所以a不能做左值。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1827

帖子

18

粉丝