C语言结构体中定义三维数组,然后在声明一个结构体的数组,这样可不可以?
Forexample,structtime{intlend_time[10][12][31]};然后声明一个数组structtimea[10];这样子可不可以?...
For example,
struct time
{
int lend_time[10][12][31]
};
然后声明一个数组
struct time a[10];
这样子可不可以? 展开
struct time
{
int lend_time[10][12][31]
};
然后声明一个数组
struct time a[10];
这样子可不可以? 展开
2个回答
展开全部
这么定义是没问题的,编译肯定是没有问题的([31]后面是不是少了一个分号)。但是关键是struct time a[10];定义在哪了(这么定义相当于37200个int类型)。
如果是一个全局变量,那好说,这个占用数据段的空间,一般来说数据段空间比较大,能够分配出来这么大空间。
如果只是一个局部变量的话,那很有可能会导致堆栈溢出。这个a需要的是145K字节的内存,堆栈空间没有这么大的,局部变量搞不出来这么大。
推荐如下的写法,使用动态内存来分配:
struct time *a;
a = (struct time *)malloc(sizeof(struct time) * 10);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询