二维数组和二级指针

 我来答
折柳成萌
高粉答主

2018-05-31 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:6292万
展开全部
通过二级指针去访问二维数组需要先给二级指针分配等同于二维数组行数的一维数组指针,然后把二维数组的每行首地址赋值给对应位置的一维指针上。之后就可以通过二维指针直接访问了。
参考代码如下,可以看具体注释辅助理解。

#include <stdio.h>//输入输出头文件。#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 = NULL;//定义二维指针。 int i, j; p = (int **)malloc(sizeof(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);//释放申请的内存。 return 0;}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式