1.结构体所占的字节数:
内存对齐 :1)对于大多数计算机,数据项要求从某个数量字节数的倍数开始存放
2)short型数据从偶数地址开始存放,而int型数据则被存放在4字节地址边界
3)为了满足内存地址对齐的要求需要在较小的成员后加入补位
结构体在内存中所占的字节数与所定义的结构体类型有关
2.通过名字访问结构体成员:结构体变量名 . 成员名
例. strcpy(stu1.studentName,“王刚”); //为字符数组的首地址
对嵌套的结构体成员,必须以级联方式访问
例. Stu1.birthday.year=2000;
//结构体变量
//结构体变量
只能在相同类型的结构体进行赋值!!!
标识结构数组的成员:
为了表示结构数组中的成员,可以采用访问单独结构的规则:在结构名后面加一个点运算符,再在点运算符后面写上成员名。如下所示:
Library[0].value //第1个数组元素与value相关
注意:数组下标紧跟在library后面,不是成员名后面:
Library.value[2] //错误
Library[2].value //正确
思考:library[2].title[4]表示library数组第3个结构变量(library[2]部分)中书名的第5个字符(title[4]部分)
嵌套结构
有时候,在一个结构中包含另一个结构(即嵌套结构)很方便。
例.
Struct names
{ char first[LEN];
char last [LEN];
}; //第一个结构
Struct guy
{
struct names handles;
char favfood[LEN];
char job[LEN];
float income;}
如何在结构声明中创建嵌套结构?
和声明int类型变量一样,进行简单的声明:
Struct names handle;
该声明表示handle是一个struct names类型的变量。当然,文件中也应包含结构names的声明。其次,注意如何访问嵌套结构的成员,这需要使用两次点运算符:
printf("hello,%s!\n",fellow.handle.first);
从左往右解释fellow.handle.first:(fellow.handle).first
也就是说,找到fellow,然后找到fellow的handle的成员 ,再找到handle的first成员