本人未重视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

最新文章

  1. 微信小程序的认识和开发适用性
  2. StackExchange.Redis通用封装类分享(转)
  3. ViewPager的使用小技巧
  4. mysql触发器查看
  5. 网络流量监控shell脚本
  6. 动态弹球的实现 加入了多线程技术--javaSE游戏准备工作
  7. shell的入门
  8. Centos 6.5升级到Git2.1.2的步骤
  9. 更加 &quot;深入&quot; 理解多态
  10. 关于Eclipse+SVN 开发配置
  11. python程序的标准输入输出
  12. win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
  13. JavaScript设计模式Item 1—多态
  14. vue插件官方文档,做个记录
  15. Git .gitignore文件说明
  16. Mybatis框架二:增删改查
  17. Git命令cherry-pick,选择把一部分代码提交到另一个分支
  18. FFmpeg:视频转码、剪切、合并、播放速调整
  19. python-django中间件session源码
  20. Google File System 学习

热门文章

  1. Java collection 集合类架构
  2. docker部署gitlab-ce
  3. Python__new__方法、定制属性访问、描述符与装饰器
  4. 网络流(3)——找到最小st-剪切
  5. Kettle 执行SQL脚本
  6. Java面试题-基础篇二(干货)
  7. Cooperation、Collaboration与Coordination的区别
  8. golang数据结构和算法之LinkedList链表
  9. (转)idea创建Maven项目时Maven插件内看不到mybatis-generator
  10. 不获取元素,直接使用id操作dom元素