c语言 一维数组如何增加长度

Python017

c语言 一维数组如何增加长度,第1张

C语言一维数组分静态一维数组和动态一维数组两种。

一、静态一维数组,在定义的时候就已经确定其长度。如

int a[10]

就是定义了一个长度为10个元素的整型数组。

静态数组不支持长度的增加。如果要增加长度,只能新定义一个更长的数组,并把原始数组的数据复制到新数组中。

二、动态一维数组,本质上是一个一维指针,并在其上分配一段内存,在这段内存上,可以当做数组来使用。

这种情况下,可以通过realloc函数,来实现增加长度。

int *p //定义指针

p = malloc(10*sizeof(int))//分配10个元素。

p = realloc(p,20*sizeof(int))//重新分配,长度增加到20. 使用该函数,可以保持原本空间内的数据不变,只是可用空间增加。

可以,但不能是静态数组如int a[50]左边分配在堆栈上,(分配在堆栈上的变量)不能在编译时不知道分多少空间,并且分了多少空间就是多少。

如果想让数组大小动态分配,可以使用下面做法,记得用完要free:

int* a=(int*)malloc(n*sizeof(int))//n是数组的大小。

或者这样calloc函数的一个好处就是分配完内存区域后会自动把该区域清零,所以特别适合数组:

int* a=(int*)calloc(n,sizeof(int))//n是数组的大小。

延长数组大小的话这样做:

a=(int *)realloc(a,m*sizeof(int))//m新数组的大小。并且,原来malloc或者calloc的内存区域会自动被free掉,不用你操心。

C语言一维数组分静态一维数组和动态一维数组两种。

一、静态一维数组,在定义的时候就已经确定其长度。如

int a[10]

就是定义了一个长度为10个元素的整型数组。

静态数组不支持长度的增加。如果要增加长度,只能新定义一个更长的数组,并把原始数组的数据复制到新数组中。

二、动态一维数组,本质上是一个一维指针,并在其上分配一段内存,在这段内存上,可以当做数组来使用。

这种情况下,可以通过realloc函数,来实现增加长度。

int *p//定义指针

p = malloc(10*sizeof(int))//分配10个元素。

p = realloc(p,20*sizeof(int))//重新分配,长度增加到20. 使用该函数,可以保持原本空间内的数据不变,只是可用空间增加。