数组指针的定义与使用 |
您所在的位置:网站首页 › 指针域怎么定义数组 › 数组指针的定义与使用 |
数组指针存放数组的地址由于数组的大小和类型各有不同,所以数组指针的定义与赋值应该与具体的数组绑定。
一维数组指针定义的三种方法
一维数组指针保存一维数组的地址,是一个二级指针
1、定义一个数组,再定义一个相应的数组指针,最后将数组的地址赋值给数组指针 int a[10] = {0}; int (*p)[10]; p = &a;2、先给数组类型取别名,用别名来定已定义数组与数组指针,最后完成赋值(不常用) typedef int ARR[10]; // ARR 的类型为int [10],代表存放10个int类型的数组 ARR b = {0}; ARR *p = &b;3、直接给数组指针类型取别名,用别名定义数组指针类型,最后完成赋值 typedef int (*PARR)[10]; // PARR的类型为int(*)[10],代表一个指针类型 // 这个指针类型存放int [10]类型数组的地址 int a[10] = {0}; PARR p = &a; 二维数组指针定义的三种方法 二维数组指针保存二维数组的地址,是一个三级指针,定义方法同一维数组指针的定义 // 1、直接定义后赋值 int a[2][3] = {0}; int (*p)[2][3] = &a; // 2、给二维数组类型取别名后再定义赋值 int a[2][3] = {0}; typedef int ARR[2][3]; ARR b = &a; // 3、给二维数组指针类型取别名后再定义赋值 int a[2][3] = {0}; typedef int (*PARR)[2][3]; PARR p = &a; 二维数组的地址表示以及步长使用二维数组指针操作二维数组有点复杂,一般对二维数组的操作使用一维数组指针,即行指针 int main07() { int a[2][3] = { 1,2,3,4,5,6 }; //定义一个指针来保存 二维数组的首行地址 &a[0] == a //因为要保存第0行的地址,第0行其实就是一个一维数组,即保存一维数组的地址,一维数组 int(*p)[3] = a; for (int i = 0; i //printf("%d ",*(*(p+i)+j));//*(p[i]+j) == p[i][j] *() == [] printf("%d ",p[i][j]); printf("%d ", a[i][j]); } } system("pause"); return 0; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |