随机:数组与指针要点

要点:

l  地址分为地址变量与地址常量。前者又叫指针,后者例如数组名。

l  地址两要素:数值、所指元素类型

l  两种形式的等价 a[i]等价于*( a+i)

                   *(p+i)等价于p[i]

l  数组名就是数组第一个元素的地址(注意:你要把任何维的数组都按一维数组来理解)

l  数组与指针的等价关系

l  多维数组可以理解为一维数组

          int          a[3];

模式: 元素类型␣数组名[元素个数];

int a[2][3];

int (*p)[3] = &a[1];

int *q = a[1];

a[1]有双重性:

第一,它代表第二行,所以它有地址。(在int (*p)[3] = &a[1]中,是将a[1]看作第二行。)

第二,它代表第二行第一个元素的地址。(在int *q=a[1]中,是将a[1]看作第二行第一个元素的地址。)

地址是个常量,你不能说一个地址还有地址。

a[1]的类型是int [3]。

int (*p)[3] = &a[1]没有损失类型,但int *q=a[1]却从int [3]到了int *,也就是说decay了。

原文地址:https://www.cnblogs.com/dr-xsh/p/12507284.html