|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 john-rgt 于 2017-6-16 18:11 编辑
一、结构的简介
结构:相当于一个班集体,包含所有的学生,学生又分别有自己的属性;
每个结构都有自己的名字,所以当我们访问它的时候,可以通过名字访问,但是不能通过下标访问,因为他们的长度不一定相同。
结构体的声明:
法一:
struct tag
{
member list;
}vatiable list;
eg:
struct person
{
char name[size];
int number;
char sex;
}rgt;
法二:
先声明一个标签,再定义变量:
struct person
{
int a;
char name[size];
};
struct person rgt;
struct person y[20],*z;
person为标签,rgt是结构体变量;
法三:
用typedef创建一个新类型;
typedef struct
{
int a;
char b;
}simple;
simple x;
simple y;
这个技巧和声明一个结构标签一样,但是区别在于simple现在是个类型名,而不是个结构标签;
二、结构的访问
1、直接访问,用 ( . ) 操作符;
2、间接访问 a->b,a必须是一个指向结构的指针
3、结构的自引用:
struct person
{
int a;
struct person b;
}
这个是非法的,因为内部包含成员b,而b又是一个完整的结构,它还将包括它自己的成员b,这样重复下去永无止境;
struct person
{
int a;
struct person *b;
}
b现在是一个指针而不是结构,这种引用是合法的。
注意:
typedef struct
{
int a;
simple *b
char c;
}simple;
这个声明是错误的,这里必须定义一个标签来声明b;
typedef struct simple_rgt
{
int a;
struct simple_rgt *b;
char c;
}simple;
4.不完整的声明
相互依赖的结构。
struct B;
struct A{
struct B *partner;
};
struct B{
struct A *partner;
};
三、结构、指针和成员
当声明一个结构指针,指向一个结构时,指针与结构的一个成员的类型不一样,所以不能相等。
四、结构的存储分配
struct中的每个域在内存中都独立分配空间
union只分配最大域的空间,所有域共享这个空间
我们在声明结构成员时,让那些对边界要求严格的成员首先出现
五、位段
位段的成员必须为int /signed int /unsigned int ,其次在成员名后面是一个冒号和一个整数,整数知道该位段所占用的位的数目; |
评分
-
查看全部评分
|