动态定义数组长度,动态数组的定义

http://www.itjxue.com  2023-01-21 04:51  来源:未知  点击次数: 

C语言中怎么定义动态的数组长度

动态数组长度,对于部分新的编译器,支持C99的,可以直接用变量定义数组

比如

func(int?n)

{

????int?a[n];

????....

}

不过 有些编译器不支持 会报错

就只能使用动态数组,也就是malloc

func(int?n)

{

????int?*a;

????a=(int?*)malloc(sizeof(int)*n);

????....

????free(a);

}

c++动态定义数组长度

你可以先定义一个全局指针变量(如果要求整型数组的话就是int* a,字符型就是char* a等),指针你可以把它理解成数组int a[],这里数组a就相当于int*a,但这时指针还没有分配内存空间,只要分配了就相当于数组,但比数组的优势在于可以动态定义长度,如果分配了空间之后a中存储的值就是分配的空间的位置 ,比如分配空间后a中值为2000,表明它指向2000这个位置,由于是全局变量,因此函数执行完,a也不会消失,因此一直都有a=2000(除非在函数中被重新分配了空间)

再分配内存区域,用new函数,比如整型指针,就用语句a=new int[n+1],就相当于此时已经定义了数组a[n+1],后面的操作可以就相当于有了a[n+1]该怎么用就怎么用

最后当你把数组使用完毕后,要释放掉内存空间,免得空间浪费,用delete释放掉内存空间,以后在想给a分配空间再用new分配就好了

C语言怎么自定义数组长度。

动态分配的数组可以自定义数组的长度,示例如下:

#include stdio.h

#include string.h

#include stdlib.h

int main()

{

printf("输入要分配的内存大小:");

int size;

scanf("%d", size); //输入自定义的数组长度

int *pstart = (int *)malloc(sizeof(int) *size);

if (pstart==0) {

printf("不能分配内存\n");

return 0;

}

memset(pstart, 0x00, sizeof(int) * size);

int inx;

for (inx=0; inx!=size; ++inx) pstart[inx] = inx;

for (inx=0; inx!=size; ++inx) printf("%d\t", pstart[inx]);

printf("\n");

return 0;

}

C程序中数组长度能否动态定义?在长度暂时未定的情况下,应怎么处理

数组是不能动态定义的,必须在定义时申明长度,长度未定的话,可以使用C++的向量,或者使用链表存储,祝好运

(责任编辑:IT教学网)

更多