C语言结构体中定义三维数组,然后在声明一个结构体的数组,这样可不可以?

Forexample,structtime{intlend_time[10][12][31]};然后声明一个数组structtimea[10];这样子可不可以?... For example,
struct time
{
int lend_time[10][12][31]
};
然后声明一个数组
struct time a[10];
这样子可不可以?
展开
 我来答
风雷九州
2014-11-25 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:414万
展开全部

这么定义是没问题的,编译肯定是没有问题的([31]后面是不是少了一个分号)。但是关键是struct time a[10];定义在哪了(这么定义相当于37200个int类型)。


如果是一个全局变量,那好说,这个占用数据段的空间,一般来说数据段空间比较大,能够分配出来这么大空间。


如果只是一个局部变量的话,那很有可能会导致堆栈溢出。这个a需要的是145K字节的内存,堆栈空间没有这么大的,局部变量搞不出来这么大。


推荐如下的写法,使用动态内存来分配:

struct time *a;
a = (struct time *)malloc(sizeof(struct time) * 10);
turntogo
2014-11-25 · 超过13用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:14.8万
展开全部
当然可以。
追问
但是我的一个程序里这样做了,结果一运行程序程序就停止工作,把这个三维数组去掉了程序就能运行了。
追答
说一下你的程序运行的环境。用的什么软件,在什么条件下试的。如果内存不够的话,是会不正常的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式