EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言一维数组( _( x& a: k2 D: V5 J: o& [( L
8 j+ q( Z, g0 ]2 ~/ h/ O" {/ G
! f3 T3 L6 F' N9 G. I& y; i
一维数组$ t$ x0 O: z1 ~6 Q3 |2 |
2 g" x( y2 R& I% z' @
在c和c++中数组的指针就是数组的起始地址(也就第一个元素的地址),而且标准文档规定数组名代表数组的地址(这是地址数值层面的数组表示)。例如: int a[10]; int *p; p=&a[0]//和p=a是等价的。 因为a是数组名,所以他是该数组的地址,同时因为第一个元素为a[0],那么&a[0]也代表了该数组的地址。但是我们是不是就说一个数组名 和该数组的第一个元素的&运算是一回事呢?在一维的时候当时是的,但是在高维的时候,我们要考虑到维数给数组带来的影响。 a[10]是一个数组,a是数组名,它是一个包含10个int类型的数组类型,不是一般的指针变量噢!(虽然标准文档规定在c++中从int[]到 int*直接转换是可以的,在使用的时候似乎在函数的参数为指针的时候,我们将该数组名赋值没有任何异样),a代表数组的首地址,在数字层面和a[10] 的地址一样。这样我们就可以使用指针变量以及a来操作这个数组了。 所以我们要注意以下问题: p和a都是代表该数组的第i+1个元素; p+i和a+i代表了第i+1个元素的地址,所以我们也可以使用 *(p+I)和*(a+I)来引用对象元素; p+1不是对于指针数量上加一,而是表示从当前的位置跳过当前指针指向类型长度的空间,对于win32的int为4byte; ) W, u2 }, G( M2 {
|