c语⾔中如何通过⼆级指针来操作⼆维数组
通过⼆级指针去访问⼆维数组需要先给⼆级指针分配等同于⼆维数组⾏数的⼀维,然后把⼆维数组的每⾏⾸地址赋值给对应位置的⼀维指针上。之后就可以通过⼆维指针直接访问了。
参考代码如下,可以看具体注释辅助理解。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25#include <stdio.h>//输⼊输出头⽂件。
c语言二维数组表示方法#include <stdlib.h>//本程序需要⽤到malloc/free函数,引⽤该头⽂件。
int main()
{
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; //定义⼆维数组a,并赋值从1-12.
int** p = ;//定义⼆维指针。
int i, j;
p = (int**)malloc(of(int*) *3);//要访问的数组有三⾏,所以申请三个⼀维指针变量。
for(i = 0; i < 3; i ++)
{
p[i] = a[i];//将⼆维数组⾏地址赋值到对应的⼀维指针上。
}
for(i = 0; i < 3; i ++)
{
for(j = 0; j < 4; j ++)
printf("%d ", p[i][j]); //⽤指针输出元素。p[i][j]这⾥也可以写作*(*(p+i) + j)。
printf("\n"); //每⾏输出后加⼀个换⾏
}
free(p);//释放申请的内存。
return0;
}
⽤⼆维指针访问⼆维数组多⽤于函数调⽤。
对于⼀维数组,如果函数参数为⼀维指针可以直接⽤数组名当做函数参数。但是如果函数参数为⼆维指针,直接⽤⼆维数组名做参数会出现访问出错,是因为⼆维指针和⼆维数组的访问⽅式不同造成的,需要如⽰例代码中做转换。
另外⼀种常⽤的⽅法是利⽤⼆维数组的内存连续性将⼆维数组转为⼀维数组处理,与本题⽆关,不做更多描述。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。