C/C++中new的使用规则
本人未重视new与指针的使用,终于,终于在前一天船翻了,而且没有爬上岸;
故此,今特来补全new的用法,及其一些规则;
话不多说
C++提供了一种“动态内存分配”机制,使得程序可以在运行期间,根据实际需求,要求操作系统临时分配一片内存空间用于存放数据;
通过new运算符来实现;
new实现一维指针:
int * P;
P = new int; //开辟一个存放整数的空间,并返回一个存储空间的地址(即指针);
* P = ; int * P = new int(); //与上相等
int * Y = new int;
int * Y = new int(); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个该存储空间的地址;
分配一个任意大小的数组:
T * P;
P = new T[N]; //T是任意类类型名, N代表元素个数 int *A = new int[]; //开辟一个存放10个整数(数组)的空间,返回首元素的地址
二维数组: (以5行5列的矩阵为列)
int i;
int row = ,list = ;
int **Matrix;
Matrix = new int *[row]; //给一维指针开辟空间
for(i = ;i<row;i++)
Matrix[i] = new int [list]; //第二维空间开辟
一维二维的两种方式均可使用;
int * Matrix = new int[row * list]; //当成一维数组连续开辟
简化二维指针的开辟,通过 Matrix [ i * (list + 1) + j ]来访问第i行第j列的数据;
开辟指针的释放:
int * P = new int;
* P = ;
delete P; int * P = new int [];
P[][] = ;
delete [] P;
用new运算符动态分配的内存空间,要用delete运算符释放,否则,会出现“内存泄漏”;
上述矩阵的释放方式:
for(i = ;i < row;i++)
delete [] Matrix[i];
delete [] Matrix; //
//
delete [] Matrix;
2019-11-02 16:56:02
下次学到再来;
发现错误,修改了一下,贴一个正确的二维数组的例子;
#include<iostream> using namespace std; int main()
{
int i,j;
int row = ,list = ;
int **Matrix;
Matrix = new int *[row];
for(i = ;i<row;i++)
{
Matrix[i] = new int [list];
for(j = ;j<list;j++)
Matrix[i][j] = ;
}
for(i = ;i<row;i++)
{
for(j = ;j<list;j++)
cout<<Matrix[i][j]<<" ";
cout<<endl;
}
for(i = ;i<row;i++)
delete [] Matrix[i];
delete [] Matrix;
return ;
}
2020-01-11
C/C++中new的使用规则的更多相关文章
- JavaScript中正则表达式判断匹配规则以及常用的方法
JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...
- Ubuntu中保存iptables防火墙规则
Ubuntu中保存iptables防火墙规则的例子 打开防火墙 ufw disableufw statusufw enable ufw allow 22/tcp ufw reload iptables ...
- C++中的默认参数规则
C++中的默认参数规则 C++的默认参数规则其实是一个非常容易掉坑的规则,尤其是当一个函数拥有多个声明的时候,每个声明的默认参数可以各不相同,在调用时又可能与每个声明都不同:这篇博客稍微列举一下C++ ...
- 前端Vue中常用rules校验规则
前提 在 vue开发中,难免遇到各种表单校验,这里整理了网络上和自己平时高频率用到的一些校验方法.如果错误欢迎指出,后期不断补充更新. 1.是否合法IP地址 export function valid ...
- Android中jsoup的混淆规则【转】
Android中jsoup的混淆规则版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 说实话这篇文章的标题和内容我觉得很水,所以读者们要是也觉得这篇文章 ...
- 前端传数据到后台,后台用实体类接收不到引发的思考----Java bean中字段命名潜规则
1.按照Java语法规范,通常在实体类中的属性,首字母都是小写的.这是由于JavaBean的规范导致的.一般JavaBean属性都是首字母小写,以驼峰命名格式命名,相应的 getter/setter ...
- JavaScript中this的绑定规则
JavaScript中this的绑定规则 前言 我们知道浏览器运行环境下在全局作用域下的this是指向window的,但是开发中却很少在全局作用域下去使用this,通常都是在函数中进行使用,而函数使用 ...
- java中包命名常见规则
做java的都知道java的包.类.接口.枚举.方法.常量.变量等等模型都有一套约定的命名规则! 学习每一种语言都应该学习对应语法和命名规则,以保持一个良好的编码风格.一来显示自己的专业.二来方便阅读 ...
- 关于js中值的比较规则问题
上一篇文章提到了javascript中可变值与不可变值,如果你不知道什么是可变值和不可变值,可以先去看看那篇文章,再回来看这篇,因为这篇文章是基于可变值与不可变值讲解的. 那我就默认你知道什么是可变值 ...
- CI 框架中的自定义路由规则
在 CI 框架中,一个 URL 和它对应的控制器中的类以及类中的方法是一一对应的,如: www.test.com/user/info/zhaoyingnan 其中 user 对应的就是控制器中的 us ...
随机推荐
- SSM框架之Mybatis(4)SqlMapConfig
Mybatis(4)SqlMapConfig.xml SqlMapConfig.xml 中配置的内容和顺序 -properties (属性) --property -settings(全局配置参数) ...
- JavaWeb之(1)Tomcat安装及项目的发布方法
Tomcat安装及项目的发布方法 Tomcat安装 1.直接解压,然后找到bin/startup.bat 2.双击,如果出现命令行界面且最后一句为"信息: Server startup in ...
- Toast实现源码解析
说明 本篇文章用于介绍Android中Toast的实现原理.和简单实现一个自定义的Toast. Toast实现 一般常用Toast格式为: Toast.makeText(context,"t ...
- 究竟是什么毁了我的impl实现
Impl模式早就有过接触(本文特指通过指针完成impl),我晓得它具有以下优点: 减少头文件暴露出来的非必要内部类(提供静态库,动态库时尤其重要): 减小文件间的编译依存关系,大型代码库的编译时间就不 ...
- win7个性化不能换界面:此页面上的一个或多个设置已被系统管理员禁用,关机里的切换用户和锁定为灰色
win7个性化不能换界面:此页面上的一个或多个设置已被系统管理员禁用,关机里的切换用户和锁定为灰色 找到注册表 cmd-regedit HKEY_CURRENT_USER\Software\Micro ...
- Shell命令-搜索文件或目录之whereis、locate
文件及内容处理 - whereis.locate 1. whereis:查找二进制命令,按环境变量PATH路径查找 whereis命令的功能说明 whereis 命令用于查找文件.该指令会在特定目录中 ...
- phpstudy配置虚拟域名
之前有一篇使用xampp配置虚拟域名,但是不同公司使用的集成环境不同,(xampp是我自己用的,别误解(><) !)这次使用的phpstudy,相比较而言,phpstudy更简单一点 首先 ...
- 智能指针类模板(中)——Qt中的智能指针
Qt中的智能指针-QPointer .当其指向的对象被销毁时,它会被自动置空 .析构时不会自动销毁所指向的对象-QSharedPointer .引用计数型智能指针 .可以被自由的拷贝和赋值 .当引用计 ...
- Jmeter Question 之“集成Ant+Jenkins自动化”
首先介绍一下Ant.Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. 是的.还是Apache家 ...
- Tomcat相关目录及配置文件
目录结构 [root@localhost tomcat]# tree -L 1.├── bin├── BUILDING.txt├── conf├── CONTRIBUTING.md├── lib├── ...