c语言中如何自定义结构体数组长度

[复制链接]
查看11 | 回复4 | 2010-3-25 09:04:30 | 显示全部楼层 |阅读模式
TIME m[k]; 这一句是不需要的,上面的malloc已经建立了一个有k个TIME类型元素的数组m了
回复

使用道具 举报

千问 | 2010-3-25 09:04:30 | 显示全部楼层
你的TIME m[k]错了,因为在声明数组时,给的大小的值必须是常量,如果要动态确定大小,得用malloc,你上面不是已经动态分配过了吗,那样就行了,后面再用m做变量名也会和前面的冲突
回复

使用道具 举报

千问 | 2010-3-25 09:04:30 | 显示全部楼层
在结构体内部的int a[50],像这样初始化的时候就定义应该是可以的。
回复

使用道具 举报

千问 | 2010-3-25 09:04:30 | 显示全部楼层
由于你的k值是在程序执行时确定的,程序在编译时不能确定该值,就发生错误了TIME m[k]; 这里错了,m已经声明过了,再声明一遍明显是错的。直接用m[0],m[1]。。。。就可以了。注意用完后free(m),以免内存泄漏
回复

使用道具 举报

千问 | 2010-3-25 09:04:30 | 显示全部楼层
C语言规定,定义静态数组时,必须指明其大小,即数组的大小必须确定,否则编译器无法为其分配空间。你程序中定义静态数组时,TIME m[k]中的k不是个确定值,因为编译器会报错。
如果想动态申请数组,可以使用链表,这样就可以根据程序的需要随时改变数组的大小。
在使用动态数组之前需先创建结点,然后再为结点分配动态内存,具体的可以去看下书。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行