创建和使用动态数组
来源:互联网 发布:linux整行复制 编辑:程序博客网 时间:2024/05/21 18:40
http://www.cppblog.com/liujiajia/archive/2008/07/12/55984.html
动态数组,顾名思义,就是可以动态分配长度的数组。在c语言中,数组的长度是固定的,而这种限制显然是很不灵活的。在c++中,数组有时候不用在编译时就知道长度,直到运行时才知道。与普通的数组变量不同,动态分配的数组将一直存在,直到程序显式的释放它为止。
定义:
int *p=new int[20];
p就是一个动态数组,这时我们发现,其实所谓的动态数组就是一个指针,使用new为p分配长度。我们可以通过这种方式初始化: int *p=new int[20]();
同样上面的语句等同于:
int n=20;
int *p=new int[n];
因为n是一个变量,所以数组的长度是动态的。
操作实例:
int n=20;
int *p=new int[n];
p可以使用数组下标为其赋值:
for(int i=0;i<n;i++)
{
p[i]=i+3;
}
上面这种方式没有问题,但我想既然p是一个指针,那么使用指针操作一样也可以吧?
for(int i=0;i<n;i++,p++)
{
*p=i;
}
这样就可以了,将他们输出:(这时指针p又指向了最后)
p--;
for(int *p2=p-10;p2!=p;p--)
{
cout<<*p<<endl;
}
动态空间释放:
最后重要的是别忘了将动态创造的空间释放掉,语句是:delete [] p; ‘[ ]’表明该指针是指向的自由存储区的数组,而非单个对象。如果遗漏了空方括号,编译器将无法发现这个错误,将导致程序在运行时出错。
完成了!以下是完整代码:
#include<iostream>
using namespace std;
int main(void)
{
int n=20;
int *p=new int[n];
for(int i=0;i<n;i++,p++)
{
cout<<p<<endl;
*p=i;
}
p--;
for(int *p2=p-n;p2!=p;p--)
{
cout<<*p<<endl;
}
delete [] p;
getchar();
}
using namespace std;
int main(void)
{
int n=20;
int *p=new int[n];
for(int i=0;i<n;i++,p++)
{
cout<<p<<endl;
*p=i;
}
p--;
for(int *p2=p-n;p2!=p;p--)
{
cout<<*p<<endl;
}
delete [] p;
getchar();
}
- 创建和使用动态数组
- 如何动态创建和使用二维数组
- 如何动态创建和使用二维数组
- 一维动态数组和二维动态数组的创建和使用
- 创建和使用动态数组new char[10]
- 使用new创建动态数组
- 二维数组和动态创建数组
- 创建和使用数组
- 使用C++ vector类创建动态数组
- 使用new来创建动态数组
- 动态创建和删除二维数组
- Java动态创建和访问数组
- 动态创建和释放二维数组
- 动态创建和释放三维数组
- 动态创建和释放二维数组
- C++动态创建和删除二维数组
- 二维动态数组的删除和创建
- java 声明和动态创建数组
- bd测试面试一、二面
- strtok
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- 12周实验报告(任务2)
- Android通过Webservice连接数据库
- 创建和使用动态数组
- 检查指定目录是否存在,不存在直接创建
- 黑马程序员——从迷茫的大学认识黑马
- 团队合作中一起共事的那些头痛事
- Orcal10.1的安装与配置
- 用 DSF 模拟设备
- 第十二周实验报告4
- utf8_unicode_ci与utf8_general_ci的区别
- C language 变量命名之underscore