黑马程序员——C语言结构体

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1 结构体:
   作用:可以由多个不同类型的数据构成。
            //定义结构体类型,类型为person:(此阶段不会分配存储空间)
   
 struct person
    {
      变量; // 称为结构体变量或属性
    }
            //根据结构体类型person,定义结构体变量,变量名为p(此阶段分配存储空间)
    struct person p={ };  // 赋值的时候只能在定义结构体的时候同时赋值


      eg:错误写法
                   struct person p; 
                              p={ };
    
2. 内存分析:
    对齐算法:结构体所占用内存空间的大小,一定是结构体中最大成员所占用存储空间的倍数。 
          eg:
  struct Student
{
  int age; // 4个字节
  char *name; // 8个字节
}stu;
   结构体所占用的字节:16个字节(8的倍数);
   内存分配:定义结构体类型时不会分配内存空间,只有当赋值的时候才能分配存储空间。

3.结构体类型不能够重复定义
定义结构体变量的三种方式:(从类型和变量进行考虑)
 (1)先定义类型(相当于int、double等),再定义变量
 struct student
 {
 int age; 
 };
 struct student stu;

  (2) 定义类型的同时定义变量
 struct student
 {
 int age;
 } stu;

  (3) 定义类型的同时定义变量,但是省略类型名称
 struct
 {
 int age;
 } 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.结构体嵌套
  概念:在结构体中调用结构体。
  eg:
 
      struct names
   {
   int ages;
   int years;
   }name;
     struct Student
 {
    name *stuname; // 嵌套结构体name
    int banji;
}stu;
   
8.枚举
    关键词:enum    其余定义方法和结构体一样
   作用:固定变量的取值范围。
  注:枚举类型中定义的变量只能取枚举中的属性。
eg: 
  enum season
    {
    spring=1, // 如果不手工指定spring为1,则spring默认为0
    summer,
    };
    enum season s= spring;//s只能取spring或summer  (枚举值都是整形常量,从0开始,也可以进行手工指定)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值