能否在C程序中改变数组的长度?

来源:百度知道 编辑:UC知道 时间:2024/05/24 18:42:29
假如定义一个数组
const b=10;
int a[b];这样还可以改变B的值吗?
还有如何定义无长度限制的限制一维数组?
还有如何定义无长度限制的一维数组?

b是const类型的,值不能改变。

对于数组来说,一般方式定义的数组都是固定长度的。如果希望改变数组的长度,可以采用链表来代替普通的静态数组。

对于简单类型变量,有另一种更为简单的方式实现变长数组,就是
int *a;
然后在你需要的地方 a=new int[b];
这个时候b可以是int型的变量,可以在为a分配空间之前计算好。
只需要在最后delete a;就可以释放为a分配的内存空间。

C当中没有new和delete的话可以用malloc和free,两者等价。

以上的方式即可以实现“某种意义下”的无长度限制的一维数组。但是不能够实现无限长的数组(注意,无长度限制和无限长是不同的概念)。

b不可以被改变值

不能定义无长度限制的一维数组,否则再大的内存都要溢出
因为定义数组时就要为数组预留空间,而所谓的无限就是把内存沾满为止,而程序不可能只有这个数组占用空间,所以肯定溢出

C语言不允许动态分配数组空间,故而不可改变b的值,不可以定义无长度限制的一维数组.

楼上的你在糊弄新手?c语言没有new和delete内存操作函数

c语言不能够分配无限长度的数组。但可以用其他技巧代替:
1。链表
2。内存再分配realloc

不可以。C语言中定义数组的时候必须确定长度。