C语言,结构体数组的长度

以下定义方式好像通不过编译,应该怎么办呢?我需要一个结构体数组,还需要能输入数组长度。inta;structNODE{intvalue;intnext;}node[a];... 以下定义方式好像通不过编译,应该怎么办呢?我需要一个结构体数组,还需要能输入数组长度。
int a;
struct NODE
{
int value;
int next;
}node[a];
不用指针可以不?我不想用指针。
展开
 我来答
451006071
推荐于2017-09-05 · TA获得超过1332个赞
知道小有建树答主
回答量:368
采纳率:57%
帮助的人:330万
展开全部
你用malloc或者是calloc函数分配即可。
int a = 10;
struct NODE
{
int value;
int next;
};

int main()
{
struct NODE *arr = (struct NODE*)malloc(a*sizeof(struct NODE));//请求获取内存
//
//程序的具体操作
//
free(arr);//用完后记得归还内存
return 0;
}
malloc给你分配a个大小为struct NODE的空间,也就相当于一个结构体数组,但是用完后要用free函数释放你想系统申请的内存。

对于申请长度可变的数组,只能动态分配,也就是使用malloc或者calloc函数分配。
追问
请问malloc或relloc可以不用指针么?我不想用到指针。
追答
不可以的,其实你不要那么抗拒指针,你要注意了,数组名代表数组首元素的地址,本质就是地址。你抗拒他你永远学不会它,struct NODE *arr = (struct NODE*)malloc(a*sizeof(struct NODE));这个就是把数组的首地址保存起来。那么你可以用arr[i]来使用,很方便的。
阔气克克
2014-11-07 · TA获得超过485个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:470万
展开全部
C语言不支持动态分配内存,你需要自己分配,大概这样
#include<stdio.h>
#include<stdlib.h>
typdef struct Node
{
int value;
int next;
}Node;

int main()
{
int a;
scanf("%d",&a);
Node *p=malloc(a*sizeof(Node));
.......
}
这样p就相当于Node数组的第一个元素的指针,也可以当作数组名使用了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式