首页 > 代码库 > 指针数组与数组指针

指针数组与数组指针

//理解数组指针与指针数组要从定义开始,对于优先级的理解
//对于形如 int* p[4],那么他就是个指针数组。因为先定义数组
//对于形如int (*p)[4],就是个数组指针,因为先定义指针。

#include <iostream>#include <sys/time.h>using namespace std;int main(){ int arr[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int *p[4]; //指针数组,[]优先级高于*。p是一个数组,里面存放了4个指向整型数据的指针 int (*q)[4]; //数组指针,()优先级高,说明q是一个指针,这个指针指向一个大小为4个元素的数组的首地址 for(int i = 0;i<4;i++) { for(int j = 0;j<4;j++) printf("%4d ",arr[i][j]); printf("\n"); } printf("\n"); q = arr; for(int i = 0;i<4;i++) { for(int j = 0;j<4;j++) { printf("%4d ",*(*(q+i)+j)); //对于数组指针来说,相当于二级指针? } printf("\n"); } printf("\n"); for(int i = 0;i<4;i++) p[i] = arr[i]; //指针数组,让指针数组里每一个元素对应每一行行开头的地址 for(int i = 0;i<4;i++) { for(int j = 0;j<4;j++) printf("%4d ",*(p[i]+j)); printf("\n"); } printf("\n");}