C语言如何定义一个可变大小的数组

int a ;
scanf("%d",&a);
char cha[a][3];
这样定义为什么不行呢?如果把第一行换成int a = 1;也是不行,望大神指教。

在C语言中,数组的大小是在定义的时候就需要确定的,不然编译的时候进行分配内存时,会使计算机不知道该分配多少内存单元而报错。


然而,可以根据定义一个链表来达到可变的效果。

链表节点定义如下:

struct
{
    int data;   // 数据域
    struct node *next;   // 指针域
} *node;

struct node head, p;
head->data = 4;
head->next = p;
p->data = 5;

类似的可以将一个节点看成是数组中的一个元素,需要增加元素的时候,就增加链表的节点就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-09
可变长数组是C99标准中加入的,你的编译器不能用,只能说明不支持C99的这一特性本回答被提问者和网友采纳
第2个回答  2018-11-17
这样定义是错误的。
因为数组的长度里要填入常数。而scanf输入、int定义都是变量。
用#define a 1,定义常量。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网