问个关于C 结构体的问题,谢谢!

[复制链接]
查看11 | 回复1 | 2011-5-12 08:43:00 | 显示全部楼层 |阅读模式
本人菜鸟,结构体不太懂@@
最近在看一个大的程序里,有先有定义一个结构和数组
typedefstructTable
{
intsize;
intbits;
intcodes;
}Table;

staticintABC[5]={1,2,3,4,5};

然后又定义了Table*h=

问题是这个指针h到底指向内容是啥,是结构体还是数组?
h-size,h-bits,h-codes和数组ABC是什么关系呢?
非常感谢!
回复

使用道具 举报

千问 | 2011-5-12 08:43:00 | 显示全部楼层
该结构体是3个int型的字段组成的,指针h指向int型数组的首地址,因此,对应的,ABC[0]的值,表示h指向的结构体的size字段,ABC[1]的值就是bits字段,ABC[2]就是codes字段

h和数组没有任何联系,h是指针,它指向内存的一个地址,而h指针的类型(这里是Table型)的大小(即sizeof(Table))指示了从h指向的地址开始,取该大小(即sizeof(Table))的内存为一个单元用以存放其指向内存的数据的各个字段
简单的说,就是h指向的地址和数组ABC的首地址相同,然后h就从ABC的首地址开始一次取出3个int大小的值赋值给h-size,h-bits,h-codes

他们的关系有点类似于联合体内个元素对内存分配的关系
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行