[C/C++] C++中new的语法规则
int *x = new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
int *a = new int(); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
char *b = new char[]; //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p
而二维数组的动态创建则较为复杂:
·动态申请列大小固定的二维数组
//列值固定
const int MAXCOL = ;
cin>>row;
//申请一维数据并将其转成二维数组指针
int *pp_arr = new int[nRow * MAXCOL];
int (*p)[MAXCOL] = (int(*)[MAXCOL])pp_arr; //此时p[i][j]就可正常使用
·动态申请大小不固定的二维数组
方式1:
cin>>row>>col;
int **p = new int*[row];
for (int i = ; i < row; i ++)
{
p[i] = new int[col];
}
访问数据的方式:直接通过a[i][j]访问第i行第j列的数据。
优缺点:通过a[i][j]访问数据容易,但是new的次数太多,释放空间不容易。
方式2:
cin>>row>>col;
int *p = new int[row*col];//这种是当成一维数组连续开辟的
访问数据的方式:通过a[i*(row+1)+j]来访问第i行第j列的数据。
优缺点:访问数据很方便,且new的次数少,释放空间容易,但是不便于理解。
测试代码:
#include<iostream>
using namespace std;
int main()
{
int row,col;
cin>>row>>col;
//方式1创建
/*int **p = new int*[row];
for(int i = 0; i < row; i ++)
{
p[i] = new int[col];
}
//赋值
for(int i = 0; i < row; i ++)
{
for(int j = 0; j < col; j ++)
{
p[i][j] = i + j;
}
}
//输出
for(int i = 0; i < row; i ++)
{
for(int j = 0; j < col; j ++)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}*/
//方式2创建
int *p = new int [row*col];
//赋值
for(int i = ;i < row*col;i ++)
{
p[i] = i;
}
//输出
for(int i = ; i < row; i ++)
{
for(int j = ; j < col; j ++)
{
cout<<p[i*(row+) + j]<<" ";
}
cout<<endl;
}
return ;
}
[C/C++] C++中new的语法规则的更多相关文章
- perl中常见的语法规则和函数
数值比较操作符 字符串 相等 == eq 不等 != ...
- php中正则表达式的语法规则
- Django模板语言(常用语法规则)
Django模板语言 The Django template language 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签 ...
- Python中比较运算符连用的语法规则
在Python中,比较运用符<.>.<=.>=.== .!=可以连用,但语法规则和其它编程语言不一样 以 == 为例,具体语法规则是: a == b == c == d 等价于 ...
- JSON 语法规则详解
JSON 的语法规则十分简单,无论用何种方法总结都只有数条而已,它参考了 C 语言家族的一些习惯,学习起来并不会感到陌生. 回顾JSON 的五点语法 1)- 数组(Array)用方括号("[ ...
- web.xml中的url-pattern映射规则
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间. 一,s ...
- JavaScript的语法规则
JavaScript的语法规则 JavaScript区分大小写 JavaScript脚本程序须嵌入在HTML文件中 JavaScript脚本程序中不能包含HTML标记代码 每行写一条脚本语句 语句末尾 ...
- XML 语法规则
转摘自:http://www.w3school.com.cn/xml/xml_elements.asp XML 语法规则 XML 文档包含 XML 元素. XML 的语法规则很简单,且很有逻辑.这些规 ...
- PHPCMS标签:PC标签模板语法规则
模板语法规则1.变量表示{$name} 被解析成 <?=$name?>,表示显示变量$name的值,其中的“name”由英文字母.数字和下划线组成首字母必须是英文字母或者下划线. 2.常量 ...
随机推荐
- C++练习--实现客户机(CLIENT)类
实现客户机(CLIENT)类. 定义字符型静态数据成员SeverName,保存其服务器名称: 整型静态数据成员ClientNum,记录已定义的客户数量: 定义静态函数ChangeSeverName() ...
- MySql学习笔记06
课程回顾 一对一关联 案例1:查询每个员工的名字和主管领导的名字 select e.ename 员工姓名,m.ename 领导姓名 from emp e join emp m on e.mgr=m.e ...
- canvas 制作表情包
canvas 制作表情包 代码如下. <!DOCTYPE html> <html> <head> <title>表情制作</title> & ...
- svg在html的使用
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> <defs&g ...
- libpng的使用
zlib 适用于数据压缩的函式库,由Jean-loup Gailly (负责compression)和 Mark Adler (负责decompression)开发. zlib被设计成一个免费的.通用 ...
- 08 datetime与logging模块(进阶)
datetime与logging模块 阶段一:日期与时间 1.datetime 模块中 主要类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间对象h ...
- Test类实验
package PC_TEST; class CPU{ int speed; CPU(){ speed=0; } CPU(int k){ speed=k; } void setSpeed(int k) ...
- go学习笔记-函数
函数 定义 格式 func function_name( [parameter list] ) [return_types] { 函数体 } 解析 func:函数由 func 开始声明 functio ...
- 42-EF Core Migration
1-常用命令 1-由于2.1版本有点不一样,不会自动创建ApplicationUser类,发现合并没效果.暂时略 增加一个字段 E:\coding\netcore\IdentitySample> ...
- JS 实现AJAX封装(只限于异步)
1.AJAX 分为异步 和 同步 请求 比如你去买一个食品,但是商店暂时没有这个食品 异步:等到商品有了再来买,这个期间我可以去做别的事: 同步:一直在这里等,什么时候商品来了,买到手了,再去做别的事 ...