A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫荆秋雪 中级黑马   /  2015-7-17 13:03  /  648 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



二、一维指针数组

1、一维指针数组

         一个数组的元素值为指针则这个数组是指针数组。指针数组是一组有序的指针的集合。指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
       指针数组的一般格式:
                     类型说明符 *数组名[数组长度]
      例如:
               int *pa[3]  表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整形变量。
      小结1:
               指针是什么?指针就是地址
               一维指针数组就可以理解为:一个一维数组,数组中存储的变量时“地址”,这样的一维数组就是一维指针数组。
     小结2:
               指针变量与普通变量的区别、一维指针数组和一维普通数组的区别,他们最大的区别是指针变量和指针数组在定义的时候都有一个“*”,如果没有这个“ *  ”,那么就是普通变量或是普通数组。

下面有实例来说明一维指针数组的应用
打印如下:

先打印出变量a,b,c的地址,这是为了更好的便于我们观察和理解。
那么一维指针数组:p[3]={&a,&b,&c}
就变成了                  p[3]={0012FF44,0012FF40,0012FF3C}

       一维指针数组和普通的一维数组是不同的,因为一维指针数组中存储的是地址,尽管如此我们还是把一维指针数组看做是普通数组开操作。

       下面我们打印一下一维指针数组的元素看看:
打印如下:
下面用一维指针数组名来访问数组中的元素
打印如下:
下面我们在程序中加一个 一维普通数组来做参照:
打印如下:
从现在来看还是没有什么太大的区别

打印如下:

打印变量a,b,c的值
打印如下:


       通过上面的打印我们可以知道:
       到现在为止我们可以把一维指针数组当成普通的一维数组
       1>数组名[数子]表示数组中存储的元素,同样我们在一维指针数组中做这样的操作也是取数组中存储的元素。
       2>*(数组名+数子)这也是表示取数组中的元素,同样我们在一维指针数组中做这样的操作也是取数组中存储的元素。
所以到目前为止来说  普通一维数组 和 一维指针数组 是没有什么区别,只是数组中存储的内容不而已,普通一维数组中存储的是 值;一维指针数组存储的是 地址。
       3>正因为这些差别,在取a,b,c的值得时候,一维指针数组要再*一次,当然这是针对用数组名来取值得情况下:
       第一次*的时候是为了取一维指针数组中元素(*p=0012FF44),由于这时的元素还是一个地址所以还需要取一次,取地址0012FF44中的内容,故*(*p)=*(0012FF44)=4

       所以: 一维指针数组 可以当做普通数组来分析!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马