数组指针和二级指针之间的区别和用法
一.数组指针形为int *p[x] NULL(x为所指向的一维数组的大小);p指向一个行向量二维数组的数组名。例如int array[][3] {{1,1,2},{2,3,4}};int (*p)[3] array;遍历这个二维数组,可利用该指针来向函数传递二维数组并将其元素修改。for(int i 0;i2;i) {for(int j 0;j3;j){printf(%d %c ,array[i][j],(j1)3? \n: );printf(%d %c,*(*(pi)j),(j1)3? \n: );printf(%d %c,p[i][j],(j1)3? \n: );}}给二维数组动态分配堆内存空间int (*p)[3] malloc(rows * sizeof(*p));//空间是连续的。分配完成后可以对其进行赋值此时切记不能直接将一个二维数组名直接给p这样会导致p的指向的内存地址改变从而造成内存泄漏。二.二级指针形如int**p NULL;表示p指向一个整形指针这个整形指针再指向一个整形变量。例如int a 10;int* q a;p q;其次可以用来指示很多个不连续的一维数组。int **p (int**)malloc(sizeof(int*)*3);(为p划分三个整形指针的大小)p[i] (int*)malloc(sizeof(int)*x)(可以为p所指向的三个整形指针再分别划分需要的内存大小)这样一来二级指针指向的是多个不同长度内存地址不连续的一维数组。三.总结数组指针和二级指针都可以用来指向二维数据但是数组指针指向的是连续的二维数组可以直接将二维数组名给到数组指针。但是二级指针则不可以因为它指向的是单个指针或者一个指针数组中数组中的每个指针又指向一个数组但是这些数组的地址并不连续。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2449022.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!