C语言,结构体数组的长度
以下定义方式好像通不过编译,应该怎么办呢?我需要一个结构体数组,还需要能输入数组长度。inta;structNODE{intvalue;intnext;}node[a];...
以下定义方式好像通不过编译,应该怎么办呢?我需要一个结构体数组,还需要能输入数组长度。
int a;
struct NODE
{
int value;
int next;
}node[a];
不用指针可以不?我不想用指针。 展开
int a;
struct NODE
{
int value;
int next;
}node[a];
不用指针可以不?我不想用指针。 展开
2个回答
展开全部
你用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函数分配。
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]来使用,很方便的。
展开全部
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数组的第一个元素的指针,也可以当作数组名使用了。
#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数组的第一个元素的指针,也可以当作数组名使用了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询