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 ...
随机推荐
- webpack打包配置禁止html标签全部转为小写
用webpack打包页面,发现html中特别写的用来给后端识别的大写标签全部被转为了小写标签,这时候需要将加一个配置 ,caseSensitive:true ,禁止大小写转换. webpack配置: ...
- PyCharm常用快捷键(pycharm使用教程)
pycharm常用快捷键与设置 pycharm高频率使用的快捷键 Ctrl+Shift+F10 运行当前的页面 Ctrl + / 注释(取消注释)选择的行 Ctrl+Shift+F 高级查找 Shif ...
- 9.智能快递柜SDK(串口型锁板)
1.智能快递柜(开篇) 2.智能快递柜(终端篇) 3.智能快递柜(通信篇-HTTP) 4.智能快递柜(通信篇-SOCKET) 5.智能快递柜(通信篇-Server程序) 6.智能快递柜(平台篇) 7. ...
- k8s资产清单(二)
什么是清单 说白了清单是k8s当中用来定义pod的文件,语法格式遵循yaml语法,在yaml当中可以定义控制器类型,元数据,容器端口号等等等....,也可以针对于清单对pod进行删除等操作 为什么太学 ...
- [Go] 使用go mod安装beego
需要go升级到1.12或以上 mkdir gomodtest cd gomodtest go mod init gomodtest 创建一个server.go package main import ...
- 无法打开“Visual Studio Code”,因为Apple无法检查其是否包含恶意软件。”的问题解决
解决方法: 1.系统偏好设置==> 安全性与隐私 ===> 在下方允许就可以了. 2.一劳永逸 但是注意安全性 打开terminal 命令行工具输入命令:sudo spctl --mast ...
- python语法区别
python语法区别: 大小写敏感 (动态语言:python)变量不用声明 p.s: 静态语言(Java)必须声明变量 语句末尾可以不打分号 可以直接进行数学计算 复制.粘贴功能失效,粘贴到别的地方的 ...
- Go命令行库Cobra的核心文件root.go
因为docker及Kubernetes都在用cobra库,所以记录一下. 自定义的地方,高红标出. root.go /* Copyright © 2019 NAME HERE <EMAIL AD ...
- 6、zabbix自定义监控
一.概述 为什么需要自定义监控呢? 虽然zabbix已经给我们准备好了很多的模板,但是有的东西还是无法监控,这时候就要我们自定义监控了. 自定义监控的思路? 比如我们现在想要监控这个值,如下所示,模板 ...
- 接口是用get还是post,如何选择?
为了保证信息安全性,注册.登录等操作通常都会使用POST请求,GET请求一般用来获取信息 GET与POST的区别可以参考下方链接 https://www.cnblogs.com/hyddd/archi ...