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

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

三、已知第二维

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

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

多说一句:new和delete要注意配对使用,即有多少个new就有多少个delete,这样才可以避免内存泄漏!
C++ 指针二维数组, C++二维指针数组笔记的更多相关文章
- C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间
1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 s ...
- C/C++二维数组名和二级指针
转载 :https://blog.csdn.net/wu_nan_nan/article/details/51741030 作者:吴一奇 1. 指针1.1 一个指针包含两方面:a) 地址值:b) 所 ...
- c++指针数组与二维数组的最大区别
下面随笔是关于指针数组说明及与二维数组的最大区别. 指针数组 数组的元素是指针型 例 利用指针数组存放矩阵 1 #include 2 using namespace std; 3 int main() ...
- C语言通过指针数组和二维数组读取文件
1 # include <stdio.h> 2 # include <stdlib.h> 3 # include <time.h> 4 # include < ...
- c++ 依据输入动态声明数组(一维,二维)
较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #includ ...
- C语言一维数组、二维数组、结构体的初始化
C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...
- C#的一维数组和二维数组定义方式:
一维数组: //一维数组定义与初始化 ,, };//第一种方式 , , }; //第二种方式 int[] one3; //第三种方式 one3=,,}; 二维数组: //二维数组定义与初始化 //不规 ...
- 【C语言学习】-05 二维数组、字符串数组、多维数组
⼆二维数组.字符串数组.多维数组
- C# 数组、一维数组、二维数组、多维数组、锯齿数组
C# 数组.一维数组.二维数组.多维数组.锯齿数组 一.数组: 如果需要使用同一类型的对象,就可以使用数组,数组是一种数据结构,它可以包含同一类型的多个元素.它的长度是固定的,如长度未知的情况下,请 ...
- 《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)
Array(数组)是JavaScript中较为复杂的数据类型,同Java.C#.VB等程序语言的数组相比.Javascript数组中的元素不必为同样的数据类型,能够在数组每一个元素上混合使用数字.日期 ...
随机推荐
- ngx_http_stub_status_module
ngx_http_stub_status_module是一个Nginx的内置 HTTP模块,该模块可以提供Nginx的状态信息.编译的时候 需指定加载该模块: --with-http_stub_sta ...
- TouchEvent: dispatchTouchEvent(), onTouch() , onTouchEvent(), requestDisallowInterceptTouchEvent() 方法中的一些细节
Q: onTouchListener与onClickListener谁先执行?A: onTouchListener中的内容先执行.若其中的onTouch方法返回true,代表该事件已被onTouch消 ...
- Speech and Language Processing, NLP 处理
https://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210 http://web.stanford. ...
- 微网站|h5弹窗|手机网站 html5 弹窗、弹层、提示框、加载条
为了精确体验,您可通过Chrome设备模式浏览.或通过[url=]手机扫二维码进入[/url] layer mobile是为移动设备(手机.平板等webkit内核浏览器/webview)量身定做的弹层 ...
- Git修改已经提交的注释或日志
对于已经修改提交过的注释,如果需要修改,可以借助 git commit --amend 来进行.(注意:修改日志的功能在svn中需要server支持,在git中可以独立修改) 注意:必须是最近提交,还 ...
- vs2015配置OpenGL开发环境
先吐槽下,不知道微软怎么整的,从win7开始,OpenGL的头文件更改到windows SDK中,不安装就不能用. 更搞笑的是,在win10下,vs2015安装还报win sdk安装失败,这典型的自己 ...
- Python提取MD5
使用Python的hashlib模块提取MD5,网上参考,觉得这个还不错,可以作为模块直接使用. # -*- coding: utf-8 -*- import hashlib import sys i ...
- Nginx作为负载均衡器upstream
Nginx中与proxy模块结合使用的模块中,最常用的当属upstream模块.upstream模块可定义一个新的上下文,它包含了一组upstream服务器,这些服务器可能被赋予了不同的权重.不同的类 ...
- Oracle数据库密码过期
按照如下步骤进行操作:1.查看用户的proifle是哪个,一般是default: SQL>SELECT USERNAME,PROFILE FROM DBA_USERS; 2.查看指定概要文件(如 ...
- 基于jquery地图特效全国网点查看代码
基于jquery地图特效全国网点查看代码.这是一款简单实用的jQuery地图特效,主要知识点是jquery和css实现了中图地图,提示层效果.效果图如下: 在线预览 源码下载 实现的代码. htm ...