iOS学习06C语言结构体

1、结构体的概述

  在C语言中,结构体(struct)指的是一种数据结构,是C语言中构造类型的其中之一。

   在实际应用中,我们通常需要由不同类型的数据来构成一 个整体,比如学生这个整体可以由姓名、年龄、身高等数 据构成,这些数据都具有不同的类型,姓名可以是字符串 类型,年龄可以是整型,身高可以是浮点型
  C语言便提供了结构体来解决我们的这种需求,它允许内 部的元素是 不同类型
   结构体是用来存放相同类型数据或者不同类型数据的自定义数据类型

2、结构体的定义

  struct 结构体名 { 
      成员变量1;
      成员变量2;
      ...
   };


1 struct student {
2     
3     // 结构体的成员变量
4     char name[20];  // 姓名  
5     char gender;    // 性别  
6     int age;        // 年龄  
7     double score;   // 成绩  
8     
9 };// 分号不能省略

3、结构体变量的定义

  第一种方式: 先定义结构体类型,再定义变量
    此定义方式与普通数据类型变量的定义方式相同;
      struct 结构体名 变量名;
     注意: 其中struct 结构名才为数据类型, 单纯的结构名不 算作数据类型。
1 struct teacher { 
2     char name[20]; 
3     int age; 
4     float height; 
5 }; // 分号不能省略
6 struct teacher englishTeacher;
   第二种方式: 定义结构体类型的同时定义变量 
1 struct teacher {
2     char name[20];
3     int age;
4     float height;
5  } mathTeacher;

    其中mathTeacher为变量名。

  第三种方式: 直接定义结构体类型变量,省略类型名
1 struct {
2     char name[20];
3     int age;
4     float height;
5  } chineseTeacher;

    其中chineseTeacher为变量名, 此结构体我们称为匿名结构体。
4、结构体的重定义 

  结构体的重定义方式分为两种:
    1) 已有 结构体进行重定义:
 1        typedef struct teacher Teacher; 

   2) 创建结构体时, 进行重定义:

1 typedef struct teacher {
2     char name[20];
3     int age;
4     float height;
5  } Teacher;

5、结构体变量的成员

  1) 结构体变量成员的初始化使用{...}给构造类型赋初始值

     1 Teacher englishTeacher = {“zf”, 23, 1.70f}; 

    注意:赋值的数值类型和成员变量的类型一一对应

  2) 赋值:
    1> 先找到结构体变量,再通过“ .” 操作符访问变量的成员,简单数据类型可以直接赋值
1   englishTeacher.name = tt
2   englishTeacher.age = 30
3   englishTeacher.height = 1.77f

    2> 结构体与结构体可以直接赋值

      注意:数组是不可以直接赋值的

      小技巧: 可以通过把数组作为结构体的成员实现直接赋值。

6、结构体所占内存的计算

  1) 最大分配(长度最大的进行分配内存) 

  2) 内存对齐(对应类型所占字节的倍数进行存放)

1 struct student {
2     char name[20];   //内存0-20
3     char gender;     //内存21
4     int age;        //内存24-27
5     double score;   //内存32-39
6 };

  图解:

   
7、结构体嵌套

 1 struct birthday {
 2     int year;
 3     int month;
 4     int day;
 5 };
 6 typedef struct birthday Birthday;
 7 
 8 struct person {
 9     char name[20];
10     char gender;
11     Birthday bir;
12 };
13 typedef struct person Person;
  结构体嵌套时,应注意避免使用结构体本身, 如下写法是错误的:
1   struct person {
2       char name[20];
3       struct person per;
4    };

8、结构体数组

  数组的类型是结构体类型,与其他数据类型的数组是一样的,可以参考iOSDay04C语言数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值