EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言一维数组9 b' w& T- D( T/ a! V" f
& J: o! W s. A8 r, ~: ]3 W! `' Z) O+ x6 {4 y7 s9 U
一维数组, j3 V. r6 V5 ^+ Q: n9 y Q
2 M& i: T. \# J$ l+ w1 R在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; - l+ N0 K6 A2 I6 T7 x. T! d( ], i
|