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

以下定义方式好像通不过编译,应该怎么办呢?我需要一个结构体数组,还需要能输入数组长度。
int a;
struct NODE
{
int value;
int next;
}node[a];
不用指针可以不?我不想用指针。

你用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]来使用,很方便的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
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数组的第一个元素的指针,也可以当作数组名使用了。

相关了解……

你可能感兴趣的内容

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