C语言如何定义一个可变大小的数组
inta;scanf("%d",&a);charcha[a][3];这样定义为什么不行呢?如果把第一行换成inta=1;也是不行,望大神指教。...
int a ;
scanf("%d",&a);
char cha[a][3];
这样定义为什么不行呢?如果把第一行换成int a = 1;也是不行,望大神指教。 展开
scanf("%d",&a);
char cha[a][3];
这样定义为什么不行呢?如果把第一行换成int a = 1;也是不行,望大神指教。 展开
3个回答
展开全部
在C语言中,数组的大小是在定义的时候就需要确定的,不然编译的时候进行分配内存时,会使计算机不知道该分配多少内存单元而报错。
然而,可以根据定义一个链表来达到可变的效果。
链表节点定义如下:
struct
{
int data; // 数据域
struct node *next; // 指针域
} *node;
struct node head, p;
head->data = 4;
head->next = p;
p->data = 5;
类似的可以将一个节点看成是数组中的一个元素,需要增加元素的时候,就增加链表的节点就可以了。
展开全部
可变长数组是C99标准中加入的,你的编译器不能用,只能说明不支持C99的这一特性
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样定义是错误的。
因为数组的长度里要填入常数。而scanf输入、int定义都是变量。
用#define a 1,定义常量。
因为数组的长度里要填入常数。而scanf输入、int定义都是变量。
用#define a 1,定义常量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询