C++ 指针二维数组, C++二维指针数组笔记
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++二维指针数组笔记相关推荐
- 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )
文章目录 一.二维数组内存大小计算 二.二维数组内存大小意义 一.二维数组内存大小计算 给定一个二维数组 : 该 二维数组 中有 444 个 一维数组 , 每个一维数组有 101010 个 char ...
- 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
文章目录 一.二维数组 1.二维数组声明及初始化 2.二维数组遍历 3.二维数组排序 二.完整代码示例 一.二维数组 前几篇博客中 , 介绍的是指针数组 ; 指针数组 的 结构特征 是 , 数组中的每 ...
- c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
#include <iostream> #include <string.h> using namespace std;void setC1(int a[],int size) ...
- 一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式
打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[ ...
- 普通一维数组、二维数组、字符串及其指针类型
一:数组 数组前提知识 1.定义数组时,若未赋值,则自动赋0 2.数组储存在连续的储存空间 3.当a[ i ]中 i >len(a)-1时,程序可能不会报错 4.访问:a[ i ],a为指针常量 ...
- 一维数组和二维数组的区别_数组指针和指针数组的区别
数组指针和指针数组的区别 - hongcha_717 - 博客园www.cnblogs.com 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整 ...
- 【C语言进阶深度学习记录】三十 二维数组与二维指针
文章目录 1 二维指针(指向指针的指针) 2 二维数组 3 二维数组的类型 3.2 如何动态申请二维数组 4 总结 1 二维指针(指向指针的指针) 指针的本质是变量 指针的指针是保存指针变量的地址.如 ...
- C/C++二维数组名和二级指针的联系与区别
1. 指针 1.1 一个指针包含两方面:a) 地址值:b) 所指向的数据类型. 1.2 解引用操作符(dereference operator)会根据指针当前的地址值,以及所指向的数据类型,访问一块连 ...
- C/C++ 指针数组、二维数组
一. 二维数组 1> 初始化 int a[3][3] = { {1,0,0}, {0,1,0}, {0,0,1} }; // 里面的括号是 {} , 而不是() 2> 将二维数组当做一维数 ...
- 二维数组解引用解释——指针
#include <stdio.h>int main() {int array[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};int (*p)[4] ...
最新文章
- linux vscode vim,VSCode Vim进阶操作
- HDU-2149(博弈)
- git恢复删除前的版本
- 虚拟机网卡无法启动获取ip地址
- eclipse 统计代码量,统计代码行数
- 如何成为一名牛逼Web前端开发人员?入行学习完整指南
- 一起等补丁:操作系统漏洞StrandHogg 2.0几乎影响所有安卓设备
- react 刨坑之路之使用create-react-app脚手架
- 获取文件夹下所有文件名(window+linux)
- java和eova的关系_Eova 1.1 发布,Java Web 快速开发平台
- java实现冒泡排序
- ijk基于exo_github上十二款最著名的Android播放器开源项目
- Java JDK安装及环境变量配置(windows)
- 通过宏函数计算结构体成员偏移量
- 算例在线帮 | 某型无厚度翅片水冷板散热的Fluent仿真分析
- 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard
- 维基解密又双叒叕曝光了 CIA 针对 Mac 和 Linux 的 3 个黑客工具
- 2021年材料员-通用基础(材料员)考试题库
- python爬虫(云打码平台)
- 「博文视点」专访黄哲铿/ Mr.K:未来三年,如何努力?如何赚钱?如何发展?...
热门文章
- python 无限循环小程序设计_Python如何实现小程序 无限求和平均
- PAT之树:一般树、二叉树、完全二叉树、二叉搜索树、二叉平衡树、并查集
- php如何接受用户邮箱发送信息,怎么将用户购物车的产品发送到邮箱
- mysql确定数据表中是否存在某字段_MySQL判断表是否存在某个列
- 【hdu3183】A Magic Lamp(思维+st表(含模版))
- [codeblocks下实现多个源文件2.0]类声明和成员函数定义的分离实战操作实现
- response Headers与request Headers字段详解(收藏)
- servlet mysql 小程序_Servlet页面注册用户的小程序(一)
- 容器技术Docker K8s 22 容器服务ACK基础与进阶-存储管理
- 问题:Warning: Attempt to present UINavigationController whose view is not in the window hierarchy