c语言中如何自定义数组长度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
参考技术A 数组不能在方括号中用变量来表示元素的个数,
但是可以是符号常数或常量表达式。
例如:
#define
FD
5
main()

int
a[3+2],b[7+FD];
……

是合法的。
但是下述说明方式是错误的。
main()

int
n=5;
int
a[n];
……

但是,数组可以超界使用。
参考技术B 这样的设计,一般使用动态分配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);

参考技术C 定义数组的时候,数组的大小必须确定,并且是整型。
在c99中提出了变长数组,即为val,意思是你可以用一个变量去代替数组的大小。
例如
int
val
=
5;
int
a[val];
变长数组中的变,也只是说你可以用变量去定义数组,但是变长数组的大小在创建后就是不变得,
而且变长数组必须的自动的存储类。
由于变长数组的限制太多了,很少人去使用他。
所以对你这个问题,需要使用动态内存,即用malloc
calloc
这类的函数。

c语言如何定义二维数组

参考技术A 二维数组定义的一般形式是:
dataType arrayName[length1][length2];

其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。

例如:
int a[3][4];
定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

以上是关于c语言中如何自定义数组长度的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何定义一个二维数组,数组长度由输入值确定?

js中一个自定义数组的问题

c语言中如何定义动态数组

c语言中,定义一个函数,函数输出结果是一个数组,整个的形式是怎么样的?

怎么用C语言定义一个无限长的数组?

c语言如何定义二维数组