再谈指针数组与数组指针 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    经常遇到这两个概念,很容易混淆,这里细细总结一下,

再谈指针数组与数组指针

    指针数组:是一个数组,数组的元素是指针。数组占多少个字节由数组本身决定。

    数组指针:是一个指针,它指向一个数组。在32位系统下永远是占4 个字节。

    举例说明:

    1)int *p1[n];

    2)int (*p2)[n];

    1)“[]”的优先级比“*”要高。p1 先与“[]”结合,构成一个数组的定义,数组名为p1,int *修饰的是数组的内容,即数组的每个元素,

电脑资料

再谈指针数组与数组指针》(https://www.unjs.com)。即p1是指针数组,其包含n个指向int 类型数据的指针。

    2)“()”的优先级比“[]”高,“*”号和p2 构成一个指针的定义,指针变量名为p2,int 修饰的是数组的内容,即数组的每个元素。数组在这里并没有名字,是个匿名数组。即p2是数组指针,它指向一个包含n 个int 类型数据的数组。

   

    如要将二维数组赋给一指针,应这样赋值:

    int a[3][4];

    int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。

    p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]

    p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

    所以数组指针也称指向一维数组的指针,亦称行指针。

最新文章