什么是指针数组?什么是数组指针?
简单的回答就是指针数组就是存的都是指针,而数组指针就是一个指针而已
定义方式:(优先级:()>[]>*)
- 指针数组 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了;