[c语言]指针数组和数组指针

指针数组和数组指针

指针数组:array of pointers

首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。操作和数组类似

int *p1[10];`  // [] 比 * 优先级高,所以首先是数组,数组的元素是指针, 所以是指针数组
  • 元素表示:*(p+i)
char *p[] = {"stately" , "plump" , "buck" , "mulligan"};
printf("%d\n", sizeof(p));      // 指针数组里存放的是指针,所以结果是16

for(int i = 0; i < 4; i++ )
printf("%s\n", *(p+i));
*(p+0) *(p+1) *(p+2) *(p+3)
stately plump buck mulligan

数组指针:a pointer to an array

首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。

int (*p2)[10]; // () 和 [] 优先级一样,但运算方向从左到右, *p2 构成一个指针,所以是**数组指针**
  • 元素表示:(*a)[i]

二维数组的声明 int p2[3][10],作为函数参数的声明形式为

void show_arr(int (*arr)[10], int rows)

posted on 2015-01-12 21:48  kdurant  阅读(194)  评论(0编辑  收藏  举报

导航