www.7671.net > C++ 定义动态数组

C++ 定义动态数组

最简单的办法是使用STL库中的vector.如果用VC,也可以用CArray.自己定义的话可以参考vector或CArray的代码.思路是:首先是动态申请一块内存,然后根据需要插入删除数据项或重新申请更大的内存并拷贝数据.

使用new!给你一个例子:char *p=new char[num];//num可以是变量或变量表达式delete []p;//最后删除

你可以先定义一个全局指针变量(如果要求整型数组的话就是int* a,字符型就是char* a等),指针你可以把它理解成数组int a[],这里数组a就相当于int*a,但这时指针还没有分配内存空间,只要分配了就相当于数组,但比数组的优势在于可以

你可以用new 和 delete组合来分配存储空间比如: int n;int *a=new int[n];不过你要记得在最后用delete释放掉哦!!!

创建动态的 用new关键字 释放用 delete 例: #include<iostream>using namespace std;void main(){ int n; int *a; cout<<"请输入你要创建数组元素的大小"<<endl; cin>>n; a=new int [n];}

有动态的和静态的 new/delete malloc/free 例如: 分配内存 int **a = new int* [lenth]; for(int i = 0; i < lenth; ++i) a[i] = new int [lenth]; 释放内存: for(int i = 0; i < lenth; ++i) delete []a[i]; delete []a;

在定义数组的时候要么初始化,要么指定大小.不允许定义未初始化且不确定大小的数组.你可以这样定义这个类 class abc { public: const int x; const int y; double **a; public: abc(int m,int n):x(m),y(n) { if (x>0 && y>0) { a = new double *[y]; for (int i=

char *p=new char[m]; 记得delete[] p; 如果是int也是一样的

intmain(){intlen;cin>>len;//用指针p指向new动态分配的长度为len*sizeof(int)的内存空间int*p=newint[len];..delete[]p;return0;}注意int*p=newint[len];这一句,你不能这样做:intp[len];C++编译器会报错说len的大小不能确定,因为用这种形式声明数组,数组的大小需要在编译时确定.而且这样也不行:intp[]=newint[len];编译器会说不能把int*型转化为int[]型,因为用new开辟了一段内存空间后会返回这段内存的首地址,所以要把这个地址赋给一个指针,所以要用int*p=newint[len]

举例,动态定义一个int类型的数组// 下面的语句分配内存int * parr = new int[1000];if (parr == null){// 内存分配错误}// 下面的语句初始化memset(parr,0,sizeof(int) * 1000);// 访问示例parr[100] = 100;//给数组的第101个元素附值为100

网站地图

All rights reserved Powered by www.7671.net

copyright ©right 2010-2021。
www.7671.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com