关于指针数组与数组指针的那些小事情

什么是指针数组?什么是数组指针?

简单的回答就是指针数组就是存的都是指针,而数组指针就是一个指针而已

定义方式:(优先级:()>[]>*)

  • 指针数组 int *p[4];
  • 数组指针 int (*p)[4]

我们平时定义数组的时候是这样

int *p = a[4];

这就是指向一个一维数组的指针的头,*p++就是取出下一位的数组的存放值,p存放的就是数组的头指针的地址

那么数组指针呢?

int (*p)[4] = a[4][4];

这里的指针也仅仅只是一个指针变量,指向的是行指针的头,怎么解释呢,就可以解释为p存放的地址是整个二维数组的头指针。

那么p++代表什么呢 就代表着下一个指针的头指针,那么如果要取出来(i,j)呢?

*(*(p+i)+j),*(*(p+i)[j])

扫描二维码关注公众号,回复: 11129525 查看本文章

就是*(p+i)存放的是一个一维数组的地址,此时就像一个上面的一维数组的p;

那么指针数组呢?

int *p[4];

这里面的一个数组里面存放的都是指针,也就是有个指针变量;每一个变量就相当于一开始定义的一维数组的指针变量,那么要读取(i,j)的值要怎么操作呢?

*(p[i]+j)  将p[i]当成一个普通的数组存放的值,要访问第几个值一样,然后p[i] 就相当于一维数组的指针变量p了;

发布了23 篇原创文章 · 获赞 0 · 访问量 6664

猜你喜欢

转载自blog.csdn.net/yinglang2011/article/details/104954939