作者avogau ( 假 装)
看板TransCSI
标题Re: [问题] 资料结构
时间Fri Aug 29 20:45:34 2008
※ 引述《forris (乔巴)》之铭言:
: 假设一个字元 (character) 占一个 byte,一个整数 (integer) 占两个 byte,在记忆体
: 中,一个字组 (word) 相当於两个 bytes,字元可以储存於任何位址,而整数则必须储存
: 於一整个字组中。现在以 C 定义一资料结构如下:
: struct person {
: int id;
: char name[20];
: int age;
: char sex;
: } student[100];
: 若 student[0] 之起始位址为 200 (十进位),请问 student[10].age 之位置为:
: (a) 472 (b) 473 (c) 482 (d) 483
: ans: c
: 要怎麽计算阿?
一个struct的记忆体配置
记忆体位置
0~1 int id;
2~21 char name[20];
22~23 int age;
24 char sex;
而一个struct占26byte
注意 并非25 因为要对齐 word
student[10]起始位置 = 200 + 10*26 = 460
而 age 距离struct开始22byte
所以 student[10].age 在 460 + 22 = 482
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.75.25