黑马程序员技术交流社区
标题:
数组指针与指针数组的区别
[打印本页]
作者:
小平
时间:
2015-1-4 00:45
标题:
数组指针与指针数组的区别
1. 依据 :优先级:()>[]>*
2. 数组指针:(也称行指针)
数组指针是指向数组地址的指针,其本质为指针;
说明:p是一个指针变量,它指向包含5个int元素的一维数组,此时p的增量以它所指向的一维数组长度为单位;
*p+i是二维数组a[0][i]的地址;
*(p+2)+3表示a[2][3]地址(第一行为0行,第一列为0列),*(*(p+2)+3)表示a[2][3]的值。
3. 指针数组
指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。
作者:
小平
时间:
2015-1-4 00:46
例如:{int a[4][5];int (*p)[5]=a;}这里a是个二维数组的数组名,相当于一个二级指针常量;
作者:
小平
时间:
2015-1-4 00:49
数组指针: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]; p=a; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { printf("%d",p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j) } printf("\n"); } 指针数组: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p[3]; for(int ix=0;ix<3;ix++) p[ix]=a[ix]; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { printf("%d",p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j) } printf("\n"); }
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2