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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-30
数组不能在方括号中用变量来表示元素的个数,
但是可以是符号常数或常量表达式。
例如:
#define
FD
5
main()
{
int
a[3+2],b[7+FD];
……
}
是合法的。
但是下述说明方式是错误的。
main()
{
int
n=5;
int
a[n];
……
}
但是,数组可以超界使用。
第2个回答  2019-09-10
这样的设计,一般使用动态分配malloc一个数值,如64,然后不足的时候用realloc,改变大小,可以改为当前的值乘以2.
因为不清楚何时结束,最好设置一个结束值,如0.
#define
ARRAY_SIZE
64
int
n
=
ARRAY_SIZE;
int*
p
=
(int*)malloc(n);
int
i
=
0;
while
(true)
{
if
(i
<
n)
{
scanf("%d",
&p[i]);
if
(p[i]
==
0)
break;
i++;
}
else
{
n
*=
2;
p
=
(int*)realloc(p,
n);
}
}
第3个回答  2019-07-04
定义数组的时候,数组的大小必须确定,并且是整型。
在c99中提出了变长数组,即为val,意思是你可以用一个变量去代替数组的大小。
例如
int
val
=
5;
int
a[val];
变长数组中的变,也只是说你可以用变量去定义数组,但是变长数组的大小在创建后就是不变得,
而且变长数组必须的自动的存储类。
由于变长数组的限制太多了,很少人去使用他。
所以对你这个问题,需要使用动态内存,即用malloc
calloc
这类的函数。
相似回答