c语言 定义数组时 大小必须是常量吗

来源:百度知道 编辑:UC知道 时间:2024/07/04 07:08:05
数组的大小是一个数据库的记录条数 针对某一个数据库 这个大小是不变的 如果换一个数据库 大小就变化了 但是这个值是可以通过另外一个函数来获得
请问我怎样用这个值来定义数组的大小

哈哈,楼上的两位真有意思,
一个咬定是"唯一的办法",一个还吹捧的劲儿劲儿的
动态数组的malloc和realloc都不知道吧。

这么做就可以了:
既然是记录条数,那么一定是一个整数,用动态数组就可以实现。

#include <malloc.h>
void main()
{
int *p; //动态数组的声明
p = (int * ) malloc (10);//这里的10就是动态申请的size,也就是数组的成员个数
p[0]=1;//后面就和正常的数组使用一样
p[1]=p[0]+2;
.........................

//换一个数据库 大小就变化了
p = (int * ) realloc (p,20); //假设变成了20,再通过realloc来重新定义数组大小
…………………………

free(p);//当内存不再使用时,应使用free()函数将内存块释放
}

C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式。

而C99做了很大改进,允许数组的[ ]中的值是整形变量或是整形表达式。如:

int n;
scanf ("%d", &n);
int array[n];

虽然n确实是需要运行时动态确定的变量,但是在C99中,以这种变量作为数组大小的形式已经是允许的了。这样的数组就被称之为“变长数组”。

注意:变长数组是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。

嗯.楼上说的是.这是通常采用的办法.用预编译命令,在程序文件的开关,定义一个常量,如这次你使用这个程序时记录数是一百,你就可以定义:#define MAX 100,之后,你就可以定义数组如a[MAX]下次你再使