| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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 ,其次在成员名后面是一个冒号和一个整数,整数知道该位段所占用的位的数目; |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |