码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员-关于结构体

时间:2015-01-02 06:21:28      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

       ------- IOS培训、android培训、java培训、期待与您交流! ----------

 

 

 

1 结构体:
   作用:可以由多个不同类型的数据构成。
            //定义结构体类型,类型为person:此阶段不会分配存储空间
1 struct person  
2    {  
3      变量; // 称为结构体变量或属性  
4    }  
5            //根据结构体类型person,定义结构体变量,变量名为p(此阶段分配存储空间)  
6    struct person p={ };  // 赋值的时候只能在定义结构体的时候同时赋值 
错误写法
                   struct person p; 
                              p={ };
    
2. 内存分析:
    对齐算法:结构体所占用内存空间的大小,一定是结构体中最大成员所占用存储空间的倍数。 
  
1   struct Student
2 {
3   int age; // 4个字节
4   char *name; // 8个字节
5 }stu;

 

   结构体所占用的字节:16个字节(8的倍数);
   内存分配:定义结构体类型时不会分配内存空间,只有当赋值的时候才能分配存储空间。
 
3.结构体类型不能够重复定义
定义结构体变量的三种方式:(从类型和变量进行考虑)
 (1)先定义类型(相当于int、double等),再定义变量
   
1 struct student  
2 {  
3 int age;   
4 };  
5 struct student stu;  

  (2) 定义类型的同时定义变量

1 struct student  
2 {  
3 int age;  
4 } stu; 

(3) 定义类型的同时定义变量,但是省略类型名称

1 struct  
2 {  
3 int age;  
4 } stu; 
4.作用域
  定义在函数内部:从定义那一行开始,到函数或代码块结束。(跟局部变量一样)
  定义在函数外部:从定义那一行开始,到程序结尾。(跟全局变量一样)
 
5.结构体数组(结构体中定义结构体):
    struct student stu[3] = {  { },{ },{ }  }  // 结构体数组中含有三个结构体
       数组修改方式:
            错误修改:stu[0]={ };
            正确修改:stu[0].age=10;
 
6.指向结构体的指针
     struct student  *p;
     p=&stu;
 
  有三种方法访问结构体属性:
   方法1:stu.age;
   方法2:(*p).age;//代表指针访问结构体中的age属性  
   方法3: p->age;//代表指针访问结构体中的age属性 (最常用)
 
7.结构体嵌套
  概念:在结构体中调用结构体。
 1      struct names  
 2   {  
 3   int ages;  
 4   int years;  
 5   }name;  
 6     struct Student  
 7 {  
 8    name *stuname; // 嵌套结构体name  
 9    int banji;  
10 stu;  

8.枚举
    关键词:enum    其余定义方法和结构体一样
   作用:固定变量的取值范围。
  注:枚举类型中定义的变量只能取枚举中的属性。
1 enum season  
2   {  
3   spring=1, // 如果不手工指定spring为1,则spring默认为0  
4   summer,  
5   };  
6   enum season s= spring;//s只能取spring或summer  (枚举值都是整形常量,从0开始,也可以进行手工指定)  

 

 

黑马程序员-关于结构体

标签:

原文地址:http://www.cnblogs.com/zhangxining/p/4198063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!