博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 指针二维数组, C++二维指针数组笔记
阅读量:5329 次
发布时间:2019-06-14

本文共 1420 字,大约阅读时间需要 4 分钟。

C++ 二维动态数组

一、 已知第一维

#include 
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 
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

你可能感兴趣的文章
关于密码
查看>>
oracle创建表空间
查看>>
Keycloak服务器安装和配置
查看>>
C#委托之个人理解(转)
查看>>
retrofit2 上传图片
查看>>
Linux Shell流程例子
查看>>
jQuery的三种$()
查看>>
2017.6.4 入门组 NO.4——猜数
查看>>
Eclipse 下载安装
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于cocoa 运行时runtime
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
asp.net 写入excel时,不能更新。数据库或对象为只读。
查看>>
题1简化版
查看>>
linux清空日志文件内容 (转)
查看>>
jsp中对jstl一些标签的引用方式
查看>>
100. Same Tree
查看>>
[转]java classLoader 体系结构
查看>>
mkdir命令(转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>