c语言定义未知长度一维数组,c++ 如何定义未知元素个数的数组

如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:

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指针中

温馨提示:答案为网友推荐,仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值