C++--------------------------------指针和数组替换使用原因

马上要考试了,复习数据结构中,对C的指针不太了解,在严蔚敏《数据结构(C语言版)》中,发现p22定义顺序存储结构:

typedef srtuct{
    ElemType  *elem; //存储空间基址
    int  length;     //当前长度
    int  listsize;   //当前分配的存储容量
}SqList;

顿时蒙蔽,为何定义的指针在后面能   L.elem[i]   这样的调用.....这不是数组的访问形式么?

于是谷歌:

    数组a[i]在编译的时候会被编译器复原成*(a+i),其中a是数组名,也是数组的首地址,也就是说a[i]和*(a+i)

  是完全等价的,甚至可以认为C语言没有数组,a[i]只是方便表达,实际上程序是按照*(a+i)操作的。因此,

  数组在一段连续的内存中存储的,这也是可以用数组来描述数据结构中的顺序存储结构的原因。

 

综上,对数组和指针有了更本质的理解。

posted @ 2018-12-01 11:07  不愿透漏姓名的王建森  阅读(382)  评论(0编辑  收藏  举报