C语言 结构体数组的个数如何自己定义?

#include<stdio.h>voidmain(){intx;x=3;#defineNxstructstudent{intnum;charname[20];chars... #include<stdio.h>

void main( )
{
int x;
x=3;
#define N x

struct student
{int num;
char name[20];
char sex;
float weight;
}stu[N];

}
这样为什么不行?
那如果我要N的值通过你所输入的值确定,怎么做?
展开
 我来答
kaixingui2012
2015-09-17 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6212万
展开全部

C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如:

struct st {
    int x,y;
    char str[10];
};
struct st *array ;
int n;
printf("input n: "); scanf("%d", &n);
array=(struct st*)malloc(n*sizeof(struct st)); //动态分配n个结构体空间,接下来array的操作,与数组操作是相同的,如:array[0].x=1 ;

C99以后,C语言标准开始支持动态定义数组,但动态数组,在其确定个数之后,在其生命期中,就不可变了。如:

struct st {
    int x,y;
    char str[10];
};
int n;
printf("input n: "); scanf("%d", &n);
struct st array[n] ; //定义动态数组
array[0].x=1 ;
dxw0712
2009-11-21 · TA获得超过2179个赞
知道大有可为答主
回答量:1596
采纳率:23%
帮助的人:170万
展开全部
#define N x 改为#define N 3
就可以

因为数组的个数应该是常量而不是变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_残阳_古道
2009-11-21 · TA获得超过245个赞
知道答主
回答量:93
采纳率:0%
帮助的人:0
展开全部
不用定义结构体数组,定义一个结构体变量,然后再添加元素的时候使用函数malloc.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘逸大陆
2009-11-21 · TA获得超过255个赞
知道答主
回答量:142
采纳率:100%
帮助的人:58.4万
展开全部
C里的数组除了动态分配,必须指明分配大小
#include<stdio.h>

void main( )
{
int x;
x=3;
#define N x

struct student
{int num;
char name[20];
char sex;
float weight;
}*stu;
stu=new student[N];//用指针,动态分配
//stu[0].num;这样调用
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuchuangbob
2009-11-21 · TA获得超过898个赞
知道小有建树答主
回答量:879
采纳率:0%
帮助的人:726万
展开全部
int i;
struct A *a;
scanf("%d",&i);
a = (struct A *)malloc(sizeof(struct A)* i);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式