c++ 如何定义未知元素个数的数组?【转】
2012-06-12 23:46
393 查看
如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:
int array[10];
或者
const int Size=10;
int array[Size];
当然你可以采用常量的方法,但是就是每次必须打开源代码来调整这个数组的大小,很不方便,所以要采用动态内存分配的方法;
在c语言中:
int arraysize;//元素个数
printf("请输入数组的大小:");
scanf("%d",&arraysize);
int *array;//用指针指向一个数组
array=(int *)malloc(arraysize *sizeof(int));//动态内存分配
....
free(array);//最后要释放这个空间,用完了,当然要还给系统
malloc()函数在内存堆区中寻找未被使用的内存,找够所需的字节数后返回该内存的起始地址。
所需字节数通过参数知道,在本例中arraysize元素个数,乘以每一个元素的字节数,等于总的字节数;
每一个元素的字节数通过测字节sizeof()运算符得到,元素的数据类型为int,所以测int类型需要多少字节。
malloc()函数并不知道用这些内存干什么,所以返回一个没有类型的指针,但对于整型指针array来说,malloc()函数得返回值必须显式转换成整型指针才能被接受。所以前面加了一个(int *)。
在c++中就可以不用malloc()函数和free()函数了。
int arraysize;//元素个数
cout<<"请输入数组的大小:";
cin>>arraysize;
int *array;//用指针指向一个数组
array=new int[arraysize]; //动态内存分配
....
delete []array;//最后要释放这个空间,是一组空间所以加了[]。
array=new int[arraysize];
new表示申请空间;什么类型?int;多大?arraysize
返回该内存的起始地址存到array指针中
int array[10];
或者
const int Size=10;
int array[Size];
当然你可以采用常量的方法,但是就是每次必须打开源代码来调整这个数组的大小,很不方便,所以要采用动态内存分配的方法;
在c语言中:
int arraysize;//元素个数
printf("请输入数组的大小:");
scanf("%d",&arraysize);
int *array;//用指针指向一个数组
array=(int *)malloc(arraysize *sizeof(int));//动态内存分配
....
free(array);//最后要释放这个空间,用完了,当然要还给系统
malloc()函数在内存堆区中寻找未被使用的内存,找够所需的字节数后返回该内存的起始地址。
所需字节数通过参数知道,在本例中arraysize元素个数,乘以每一个元素的字节数,等于总的字节数;
每一个元素的字节数通过测字节sizeof()运算符得到,元素的数据类型为int,所以测int类型需要多少字节。
malloc()函数并不知道用这些内存干什么,所以返回一个没有类型的指针,但对于整型指针array来说,malloc()函数得返回值必须显式转换成整型指针才能被接受。所以前面加了一个(int *)。
在c++中就可以不用malloc()函数和free()函数了。
int arraysize;//元素个数
cout<<"请输入数组的大小:";
cin>>arraysize;
int *array;//用指针指向一个数组
array=new int[arraysize]; //动态内存分配
....
delete []array;//最后要释放这个空间,是一组空间所以加了[]。
array=new int[arraysize];
new表示申请空间;什么类型?int;多大?arraysize
返回该内存的起始地址存到array指针中
相关文章推荐
- C++中如何定义动态数组
- c++如何定义不知道大小的数组
- C++中如何定义某个数组的引用?
- C++中如何定义某个数组的引用?
- C++定义未知元素个数的数组
- 【c++】用string类定义字符串数组
- ofbiz——如何使用set标签定义一个数组
- C++中定义一个数组一定要给出长度吗?
- c/c++如何为多维数组申请内存
- 在c++中如何用new生成一个构造函数带参数的类数组(转载整理)
- 简洁明了,C++中动态定义一维数组,二维数组,三维数组
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- 【C++】 用string类定义字符串数组
- C/C++中如何获取数组的长度?
- c++ 如何批量初始化数组 fill和fill_n函数的应用
- c++中如何访问数组的-1位置
- C++用string 定义字符串数组
- 没有默认构造函数,如何定义对象的数组
- c++定义数组的内存限制
- 【原创】C语言中如何用长度变量定义数组