|
|
|
|
 问个结构定义的问题 - kilby [ 2006-08-22 21:45 | 511 byte(s)]
 Re: 问个结构定义的问题 - Atu [ 2006-08-22 22:00 | 433 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
请问对于下面的结构如何定义比较好?
struct my_struct {
unsigned char code; //需要进行何种操作,读/写
unsigned short start; //操作的起始地址
unsigned short number; //被操作的个数
unsigned char val[number]; //对应于每个被操作数的需要写入的值/读出的值
}
我不知道如何处理最后那一项,因为需要操作的个数是不一定的,而后面的数组大小也不是固定的,不知道有什么更好的办法没有?还是我的这种定义本身就是允许的?
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
变长结构,最后一项长度写成1或0,在C99中,允许[]里面直接空着
struct A { int a; char b; int c[0]; };
使用的时候,先计算struct A实际需要的长度,然后malloc分配,再通过struct A *去访问它,
如上个例子中,需要在c中实际保存n个,代码这么写
struct A *p = (struct A *)malloc(sizeof(A) + sizeof(int) * n);
然后,就可以使用p->c[0], p->c[1], p->c[n-1]
|
|
|
[Original]
[Print]
[Top]
|
|
|