Chinaunix首页 | 论坛 | 博客
  • 博客访问: 879016
  • 博文数量: 149
  • 博客积分: 3671
  • 博客等级: 中校
  • 技术积分: 1701
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-03 16:52
文章分类

全部博文(149)

文章存档

2011年(57)

2010年(92)

分类: C/C++

2010-08-03 16:09:45


    指针数组,故名思义,就是指针的数组,数组的元素是指针;
    数组指针,同样,就是直想数组的指针。

    简单举例说明:

    int *p[2]; 首先声明了一个数组,数组的元素是int型的指针。
    int (*p)[2]; 声明了一个指针, 指向了一个有两个int元素的数组。

    其实这两种写法主要是因为运算符的优先级, 因为[]的优先级比*高。所以第一种写法,p先和[]结合,所以是一个数组,后与*结合,是指针。后一种写法同理。
    指针数组如下处理就会很清楚:
    typedef int* intPtr;
    intPtr p[2];
    一目了然,所以为了避免迷惑,做适当的typedef也是很有必要的。
    同理,数组指针也可以作类似处理:
    typedef int intArray2[2];
    intArray2 * p;
    和原来的声明都是等价的。
   
    个人建议编程过程中采用typedef来进行类型定义,这样程序看起来会清晰很多。举个例子说明:

    数组指针,元素为指向数组的指针:)
    首先,指向数组的指针为:
    typedef intArray2* intArray2Ptr;
    然后是一个数组的元素:
    typede intArray2Ptr intArray2PtrArr3[3];
    最后数组的指针:

    intArray2PtrArr3 *p;


    呵呵,写到这里自己也有点晕了,反正我工作以来从来没有写过这么拗口的程序,仅作参考,实际应用价值不大。
    但是开题所提到两种情况应该是比较常见的。另外就是函数指针。另外详述。
阅读(772) | 评论(0) | 转发(0) |
0

上一篇:栈的增长方向

下一篇:u-boot系统启动流程

给主人留下些什么吧!~~