[C/C++] C++中new的语法规则

1 int *x = new int;       //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
2 int *a = new int(100);  //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
3 char *b = new char[10]; //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
4 float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p

而二维数组的动态创建则较为复杂:

·动态申请列大小固定的二维数组

1 //列值固定
2 const int MAXCOL = 3;
3 cin>>row;
4 //申请一维数据并将其转成二维数组指针
5 int *pp_arr = new int[nRow * MAXCOL];
6 int (*p)[MAXCOL] = (int(*)[MAXCOL])pp_arr;
7
8 //此时p[i][j]就可正常使用

·动态申请大小不固定的二维数组

方式1:

1 cin>>row>>col;
2 int **p = new int*[row];
3 for (int i = 0; i < row; i ++)
4 {
5     p[i] = new int[col];
6 }

访问数据的方式:直接通过a[i][j]访问第i行第j列的数据。

优缺点:通过a[i][j]访问数据容易,但是new的次数太多,释放空间不容易。

方式2:

1 cin>>row>>col;
2 int *p = new int[row*col];//这种是当成一维数组连续开辟的

访问数据的方式:通过a[i*(row+1)+j]来访问第i行第j列的数据。

优缺点:访问数据很方便,且new的次数少,释放空间容易,但是不便于理解。

测试代码:

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int row,col;
 6     cin>>row>>col;
 7     //方式1创建
 8     /*int **p = new int*[row];
 9     for(int i = 0; i < row; i ++)
10     {
11         p[i] = new int[col];
12     }
13     //赋值
14     for(int i = 0; i < row; i ++)
15     {
16         for(int j = 0; j < col; j ++)
17         {
18             p[i][j] = i + j;
19         }
20     }
21     //输出
22     for(int i = 0; i < row; i ++)
23     {
24         for(int j = 0; j < col; j ++)
25         {
26             cout<<p[i][j]<<" ";
27         }
28         cout<<endl;
29     }*/
30     //方式2创建
31     int *p = new int [row*col];
32     //赋值
33     for(int i = 0;i < row*col;i ++)
34     {
35         p[i] = i;
36     }
37     //输出
38     for(int i = 0; i < row; i ++)
39     {
40         for(int j = 0; j < col; j ++)
41         {
42             cout<<p[i*(row+1) + j]<<" ";
43         }
44         cout<<endl;
45     }
46     return 0;
47 }

时间: 2024-10-26 14:14:00

[C/C++] C++中new的语法规则的相关文章

php中正则表达式的语法规则

Django项目实践2 - Django模板(常用语法规则)

http://blog.csdn.net/pipisorry/article/details/45727309 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签及属性]} Django 模板标签 if/else 标签 1. 基本语法格式如下: {% if condition %} ... display {% endif %} 或者: {% if condition1 %} ... display 1 {% elif con

eclipse使用与java语法规则

eclipse的使用 1.运行点击"三角图标"或右键Run As运行2.3. java语法规范 1.括号要成对出现2.每句代码应该有分号结束3.java语法区分大小写4.一个文件只能写一个带有public的class声明,还必须和文件名一致.一个文件中不可以有多个带有public的修饰符号5.名称写的时候不要包含关键字和非法字符(字母和下划线开头可以,也可以用数字结尾)6.java代码的语法全部都是半角符号7.学会规范的写代码. 写代码的好习惯: 1.常按保存,写完一句或几句就按一次C

web.xml中的url-pattern映射规则

Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间. 一,servlet容器对url的匹配过程: 当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是 http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localho

正则表达式的语法规则

正则表达式描述了一种字符串匹配的模式,通过这个模式在特定的函数中对字符串进行匹配.查找.替换及分割等操作.正则表达式作为一个匹配的模板,是由原子(普通字符,例如字符a到z).有特殊功能的字符(称为元字符,例如*.+和?等),以及模式修正符三部分组成的文字模式.一个最简单的正则表达式模式中,至少也要包含一个原子,如“/a/”.而且在与Perl兼容的正则表达式函数中使用的模式时,一定要给模式加上定界符,即将模式包含在两个反斜线“/”之间.一个HTML连接的正则表达式模式如下所示: ‘/<a.*?(?

C# 的主要 Razor 语法规则

Razor 代码封装于 @{ ... } 中 行内表达式(变量和函数)以 @ 开头 代码语句以分号结尾 字符串由引号包围 C# 代码对大小写敏感 C# 文件的扩展名是 .cshtml 如何工作? Razor 是一种简单的编程语法,用于在网页中嵌入服务器端代码. Razor 语法基于 ASP.NET 框架,该框架是微软的 .NET 框架特别为 web 应用程序开发而设计的组成部分. Razor 语法赋予您所有 ASP.NET 的能力,但是使用了简化过的语法,如果您是初学者,则更容易学习,如果您是专

asp程序语法规则

在浏览器中通过查看源代码的方式是无法看到 ASP 源代码的,你只能看到由 ASP 文件输出的结果,而那些只是纯粹的 HTML 而已.这是因为,在结果被送回浏览器前,脚本已经在服务器上执行了.在我们的 ASP 教程中,每个例子都提供隐藏的 ASP 代码.这样会使您更容易理解它们的工作原理.实例:用 ASP 写文本如果使用 ASP 生成文本.向文本添加 HTML如果同时生成 HTML 标签和纯文本. 基本的 ASP 语法规则通常情况下,ASP 文件包含着 HTML 标签,类似 HTML 文件.不过,

XML 树结构,语法规则,元素,属性,验证及其解析

XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶". 一个 XML 文档实例 XML 文档使用简单的具有自我描述性的语法: <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</hea

JavaScript的语法规则

JavaScript的语法规则 JavaScript区分大小写 JavaScript脚本程序须嵌入在HTML文件中 JavaScript脚本程序中不能包含HTML标记代码 每行写一条脚本语句 语句末尾可以加分号一定是英文下的分号(;),最好加分号 JavaScript脚本程序可以独立保存为一个外部文件