区分数组指针和指针数组

来源:互联网 发布:通过淘宝助理的模块 编辑:程序博客网 时间:2024/05/29 19:27

数组指针和指针数组的区别:

 

1.指针数组

   对于指针数组,他首先是一个数组;

    譬如   int  *p1[10]

 由于“[ ]”的优先级高,所以先于p1结合成为一个数组,再被定义成int *成为整形指针数组。它含有10个指针类型的数组元素,即每个元素的类型都是int*;在此p1[0],p1[1].....p1[n]分别是指针变量,可以用来存放地址。*p1=a表示指针数组第一个元素的值,a的首地址的值。

wKiom1ZS6LzxQJOvAABOVZ2Rh9g341.png

2.对于数组指针,首先它是一个指针。

  譬如:定义一个数组指针:

   int (*p2)[10];

 对于所定义的数组指针“()”的优先级高,p2先是一个指针,并且它是指向一个整形的一维数组,

这个一维数组含有10个元素,每个元素都是int,当执行p2+1时,p2此时要跨过10个整型数据的长度

int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针。(数组的每个元素都是指针)
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。       (一个指针指向有4个整型元素的数组)
int *func(void);     //指针函数。 无参函数, 返回整型指针。          (函数的返回值为int*)    

int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。      (函数的返回值为int)


0 0
原创粉丝点击