原理:二级指针,行指针+列指针

照着葫芦画瓢就行。

方法一:用c语言malloc实现

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
//二维数组的动态内存申请,采用子函数的方式  为二级指针申请内存,和释放内存
int** creatArray2D(int row, int col)
{//int *p=(int*)malloc(sizeof(int)*4)int** p1 = (int**)malloc(sizeof(int*) * row);//申请了三个一级指针(也就是行指针)if (p1 == NULL){return NULL;}for (int i = 0; i <col; i++){p1[i] = (int*)malloc(sizeof(int) *col);}return p1;
}
int main()
{int** array = creatArray2D(3, 4);for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){array[i][j] = i + j;}}for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){printf("%d\t",array[i][j]);}printf("\n");}free(array);return 0;
}

方法二:用数组指针实现

int main()
{//数组指针,指向int【4】的一个指针int(*p)[4] = (int(*) [4])malloc(sizeof(int[4]) * 3);//Malloc前面的是强制类型转化->三行四列//一步到位if (p == NULL)return NULL;for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){printf("%d\t", p[i][j] = i + j);}printf("\n");}return 0;
}

这样写虽然可以一步到位,但是优缺点:列数是一开始就固定好了

方法三:用C++实现(new和delete)

#include<iostream>
#include<string>
using namespace std;
void creatArray2D(int**&p,int row,int col)
{p = new int* [row];for (int i = 0; i < row; i++){p[i] = new int[col];}
}
void testArr(int**& p, int row, int col)
{for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){p[i][j] = i + j;cout << p[i][j]<<"\t";}cout << endl;}
}
void freeArr(int**& p, int row, int col)
{for (int i = 0; i < row; i++){delete[]p[i];p[i] = nullptr;}delete[]p;p = nullptr;
}
int main()
{int** p = nullptr;creatArray2D(p, 3, 3);testArr(p, 3, 3);freeArr(p, 3, 3);return 0;
}

//new可以理解为类型降一级。

当然不用&,那么可以用c语言传统的传地址。(原理同)

void creatArray(int*** p, int row, int col)
{*p = new int* [row];for (int i = 0; i < row; i++){(*p)[i] = new int[col];//注意此处不能写成 *p[i]=new int[col];优先级问题//此处相当于了对p[i]解引用,我们原本的意图是先化p为二级指针,再[]调成行列指针}
}

注意最后一行代码的优先级问题。

二维数组的动态内存申请,采用子函数的方式 为二级指针申请内存,和释放内存相关推荐

  1. 二维数组及其动态内存分配

    一.二维数组的基本概念 1.1 二维数组的内存映像 从内存角度看,二维数组和一维数组一样,在内存中都是连续分布的多个内存单元,并没有本质差别,只是内存的管理方式不一样,如下图所示 一维数组int a[ ...

  2. java二维数组添加元素_Java二维数组与动态数组ArrayList类详解

    java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  3. arraylist 初始化_Java二维数组和动态数组ArrayList 类

    Java二维数组 Java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  4. 动态二维数组外圈元素值的和_C语言 | 用指向元素的指针变量输出二维数组元素的值...

    例33:有一个3*4的二维数组,要求用C语言实现指向元素的指针变量输出二维数组个元素的值. 解题思路:二维数组的元素时整型的,它相当于整型变量,可以用int*型指针变量指向它.二维数组的元素在内存中是 ...

  5. 16 React【无人点餐无人收银系统案例】路由配置、菜品列表制作、请求数据渲染二维数组、动态路由传值 【基础项目】

    一.页面 二.react-router4.x 路由配置 App.js import React from "react";import { BrowserRouter as Rou ...

  6. 二维数组的认识及其表示元素的两种方式

    /*============================================================================Name : TeatArr.cAuthor ...

  7. VFP 二维数组声明和ALEN() ASCAN() AFIELD() ADEL()函数

    1.ALEN() 返回数组内元素的个数,或二维数组的行数或列数 例: local lnalen,lnrow,lncol,lncell select (employee) && 职员表的 ...

  8. Python找出二维数组中某个元素索引,自定义函数

    #函数:找出二维数组中某个元素的索引 #功能:返回目标元素在原数组中出现位置的所有索引号 def found(List,AimList):#List:搜索数组,AimList:目标元素print('原 ...

  9. C语言子函数返回二维数组讨论

    C语言中,在子函数中将一个二维数组返回 都知道,在子函数中,一定不能返回一个局部变量的指针,局部变量在子函数中进行创建,子函数调用结束后,该指针将被释放掉. 如果被指针所指向的该内存空间被别的程序占用 ...

最新文章

  1. Transformer-LS霸榜ImageNet,输入长度提升三倍!极度压缩参数
  2. 如何兼容並蓄Android Studio 與 Eclipse 的優點, 減少顧此失彼的缺憾
  3. css 字体大小_用一个 CSS 属性打造自适应网站
  4. div嵌套div 背景图片 不显示的问题
  5. vue父组件ajax改变数据,vue父组件传了变量给子组件,改变子组件的对象时,父组件也跟着改变...
  6. 加权残差连接ReZero
  7. python工作技巧_Python常用小技巧汇总
  8. 线程间通信及虚假唤醒
  9. 桌面图标及文件夹图标选中后,图标一圈出现白色虚线解决方法
  10. java剑姬_ListView和Adapter(文字列表)
  11. 一日一技:ASP.NET Core 判断请求是否为Ajax请求
  12. icpc网络赛第二场K Meal
  13. Discuz! X3.2后台管理员登录不了的问题
  14. 拷贝构造函数、析构函数、赋值操作符重载、取地址操作符重载和const修饰的取地址操作符重载...
  15. fdisk、parted无损调整普通分区大小
  16. 量子计算机组运算极限,拓扑量子计算
  17. 【Heydrones】飞手百科第一篇:一定要看的无人机原理总结
  18. 野火STM32F429学习笔记
  19. java水果爆炸动画_5分钟快速实现Android爆炸破碎酷炫动画特效的示例
  20. KB,Kb单位换算,网络带宽中的Kbps和KB/s到底是什么意思?

热门文章

  1. go-cqhttp系列教程-go-cqhttp安装
  2. uniapp 沉浸式状态栏
  3. LCD(液晶)显示器选购注意事项
  4. 活动推荐:限时领取免费9月8-9日SDCC大会门票,前10位回帖者可获得,仅限9月5日1天...
  5. 数据库概述-了解数据库-MySQL数据库服务配置-下载安装(强力推荐)
  6. java-php-python-ssm学生宿舍管理系统计算机毕业设计
  7. 皮尔逊相关(Pearson correlation)系数概述及其计算例
  8. 关于食品行业都有哪些资质认证?
  9. 计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)
  10. css中盒子模型图片,CSS 盒子模型