C++ 二维动态数组

一、 已知第一维

#include <iostream>using namespace std;int main(int argc, char const *argv []){int M = 5;int n = 5;// 声明数组行指针char * a[M];for (int i = 0; i < M; i++) {// 声明数组列指针a[i] = new char[n];// 列赋值for (int j = 0; j < n; j ++){a[i][j] = j;}}// 打印值for (int i = 0; i < M; i++){for (int j = 0; j < n; j++){printf("%d  ", a[i][j]);}printf("\n");}// 打印行指针printf("a[0]   : %p\n", a[0]);printf("a[0]   : %p\n", *(a+0));// 打印具体位置指针printf("a[0][0]: %p\n", *(a+0)+0);printf("a[0][3]: %p\n", *(a+0)+3);// 值的打印方法printf("a[1][2]: %d\n", *(*(a+1)+2));printf("a[1][2]: %d\n", a[1][2]);// delete 内存for (int i = 0; i < M; i++){delete [] a[i];}return 0;
}

View Code

二、两维都不知道

#include <iostream>using namespace std;int main(int argc, char const *argv []){int rowsNum = 5;int columnsNum = 5;// 两维都不知道char **a;a = new char * [rowsNum];for (int i = 0; i < rowsNum; i++) {a[i] = new char [columnsNum];for (int j = 0; j < columnsNum; j++) {a[i][j] = j;printf("%d ", a[i][j]);}printf("\n");}printf("%d\n", sizeof(a));for (int i = 0; i < rowsNum; i++) {delete [] a[i];}delete [] a;return 0;
}

View Code

三、已知第二维

四、 已知第一维, 一次分配内存(保证内存连续性)

五、 两维都未知, 一次分配内存(保证内存的连续性)

    多说一句:new和delete要注意配对使用,即有多少个new就有多少个delete,这样才可以避免内存泄漏!

转载于:https://www.cnblogs.com/renfanzi/p/9144734.html

C++ 指针二维数组, C++二维指针数组笔记相关推荐

  1. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )

    文章目录 一.二维数组内存大小计算 二.二维数组内存大小意义 一.二维数组内存大小计算 给定一个二维数组 : 该 二维数组 中有 444 个 一维数组 , 每个一维数组有 101010 个 char ...

  2. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )

    文章目录 一.二维数组 1.二维数组声明及初始化 2.二维数组遍历 3.二维数组排序 二.完整代码示例 一.二维数组 前几篇博客中 , 介绍的是指针数组 ; 指针数组 的 结构特征 是 , 数组中的每 ...

  3. c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针

    #include <iostream> #include <string.h> using namespace std;void setC1(int a[],int size) ...

  4. 一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

     打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[ ...

  5. 普通一维数组、二维数组、字符串及其指针类型

    一:数组 数组前提知识 1.定义数组时,若未赋值,则自动赋0 2.数组储存在连续的储存空间 3.当a[ i ]中 i >len(a)-1时,程序可能不会报错 4.访问:a[ i ],a为指针常量 ...

  6. 一维数组和二维数组的区别_数组指针和指针数组的区别

    数组指针和指针数组的区别 - hongcha_717 - 博客园​www.cnblogs.com 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整 ...

  7. 【C语言进阶深度学习记录】三十 二维数组与二维指针

    文章目录 1 二维指针(指向指针的指针) 2 二维数组 3 二维数组的类型 3.2 如何动态申请二维数组 4 总结 1 二维指针(指向指针的指针) 指针的本质是变量 指针的指针是保存指针变量的地址.如 ...

  8. C/C++二维数组名和二级指针的联系与区别

    1. 指针 1.1 一个指针包含两方面:a) 地址值:b) 所指向的数据类型. 1.2 解引用操作符(dereference operator)会根据指针当前的地址值,以及所指向的数据类型,访问一块连 ...

  9. C/C++ 指针数组、二维数组

    一. 二维数组 1> 初始化 int a[3][3] = { {1,0,0}, {0,1,0}, {0,0,1} }; // 里面的括号是 {} , 而不是() 2> 将二维数组当做一维数 ...

  10. 二维数组解引用解释——指针

    #include <stdio.h>int main() {int array[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};int (*p)[4] ...

最新文章

  1. linux vscode vim,VSCode Vim进阶操作
  2. HDU-2149(博弈)
  3. git恢复删除前的版本
  4. 虚拟机网卡无法启动获取ip地址
  5. eclipse 统计代码量,统计代码行数
  6. 如何成为一名牛逼Web前端开发人员?入行学习完整指南
  7. 一起等补丁:操作系统漏洞StrandHogg 2.0几乎影响所有安卓设备
  8. react 刨坑之路之使用create-react-app脚手架
  9. 获取文件夹下所有文件名(window+linux)
  10. java和eova的关系_Eova 1.1 发布,Java Web 快速开发平台
  11. java实现冒泡排序
  12. ijk基于exo_github上十二款最著名的Android播放器开源项目
  13. Java JDK安装及环境变量配置(windows)
  14. 通过宏函数计算结构体成员偏移量
  15. 算例在线帮 | 某型无厚度翅片水冷板散热的Fluent仿真分析
  16. 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard
  17. 维基解密又双叒叕曝光了 CIA 针对 Mac 和 Linux 的 3 个黑客工具
  18. 2021年材料员-通用基础(材料员)考试题库
  19. python爬虫(云打码平台)
  20. 「博文视点」专访黄哲铿/ Mr.K:未来三年,如何努力?如何赚钱?如何发展?...

热门文章

  1. python 无限循环小程序设计_Python如何实现小程序 无限求和平均
  2. PAT之树:一般树、二叉树、完全二叉树、二叉搜索树、二叉平衡树、并查集
  3. php如何接受用户邮箱发送信息,怎么将用户购物车的产品发送到邮箱
  4. mysql确定数据表中是否存在某字段_MySQL判断表是否存在某个列
  5. 【hdu3183】A Magic Lamp(思维+st表(含模版))
  6. [codeblocks下实现多个源文件2.0]类声明和成员函数定义的分离实战操作实现
  7. response Headers与request Headers字段详解(收藏)
  8. servlet mysql 小程序_Servlet页面注册用户的小程序(一)
  9. 容器技术Docker K8s 22 容器服务ACK基础与进阶-存储管理
  10. 问题:Warning: Attempt to present UINavigationController whose view is not in the window hierarchy