美文网首页
结构体,共用体,枚举,宏定义,预处理

结构体,共用体,枚举,宏定义,预处理

作者: 娇娇_5038 | 来源:发表于2023-12-04 10:04 被阅读0次

1.结构体

1.1 为什么需要结构体?

没有结构体之前,在C语言中,数据的组织依靠 变量+数组,最初最简单的时候,只需要使用基本数据类(int,char,float,double) 来定义单个变量,需要几个变量就定义几个变量,后来情况变复杂了,有时候需要很多意义相关的变量,这个时候数组出现了,数组解决了需要很多类型相同,意义相关变量的问题,但是数组是有限的,数组最大的不足在于,一个数组只能存储很多类型相关的变量

使用一个数据结构来保存一个学生所以的信息:姓名,学号,性别这时候需要结构体

1.2 什么是结构体?

结构体是一种里面包含很多种元素,这些元素的数据类型可以相同,也可以不同,所以结构体是一种数据封装的方法

新增关键字 struct ,是struct定义结构体

定义了一个Student结构体

注:结构体类型的定义实在函数的外面,结构体定义的是一个新的组合类型,而不是变量,不会消耗内存,在需要定义的地方,再使用结构体类型定义变量

struct Student{

char name[20];//学生姓名

unsigned int num;//学号

int isMale;//性别

}

int main(void){

//定义了一个结构体变量

struct Student s1;

//给结构体进行赋值

s1.name='jiaojiao';

s1.num=110200;

s1.isMale=1;

return 0;

}

1.3数据结构:把庞大复杂的数据用一定的方法组织起来,便于操作(查找,增加,删除)等,这叫做数据结构

结构体和数组的关联,数组是一种特殊的结构体,特殊之处在于封装内的各个元素类型是相同的。结构体各个元素类型可以是不同的

1.4使用结构体步骤

1.4.1定义结构体,定义结构体需要在全局里定义

 struct Student {

char name[20];//学生姓名

unsigned int num;//学号

int isMale;//性别

}

1.4.2.使用结构体 ,使用的是结构的体的各个元素,而不是结构体本身

struct Student s1;

s1.name='jiaojiao';

s1.num=110200;

s1.isMale=1;

1.4.3.结构体初始化

1.4.3.1 完成初始化

{xxx,xxx,xx,x,x}

第二种不完全初始化,如果某个元素没初始化,值是随机的

{

.a=xx,

.b=xx,

.c=xx

}

2.共用体

共用体,共用体内只有一个东西,只是它被好几个名字(或者类型)公用

共用体定义和结构体定义一样,使用也一样,只是关键字不一样

Union

2.1定义共用体 

2.2使用共用体步骤

2.2.1第一步定义共用体类型

union myUnion

{

int a;

char b;

float c;

}

2.2.2使用公用体

int main(void){

union myUnion u1;

u1.a=124;

printf("u1.a = %d,u1.b = %d",u1.a,ui.b)

}

2.3结构体和公用体组合使用

#include <stdio.h>

struct Male{

int age;

char name[20];

int basketball;

}

struct Female{

int age;

char name[20];

int  aerobics;

}

union student{

  struct  Male m;

  struct  Female f;

}

int main(void){

union student s[30];

s[0].m.basketball = 47;

s[1].m. aerobics  = 44;

}

3.枚举

#include <stdio.h>

 enum week {

SUN,

MON,

TUE,

WEN,

THU,

FRI,

SAT

}

int main(void){

 enum week today;

today=SAT

switch(today){

case Mon:

printf("今天星期一");

defaut:

printf("今天不是星期一");

}

}

4.宏定义

#define N 321

#define PI  3.14

#define S(r) (PI * (r) * (r))

#define Sen_year (365 * 24 * 60 * 60)UL //把这个数转为一个 unsigned long

宏定义必须定义在全局里

宏定义必须先定义再使用,否则会报错

宏定义名一般是大写(这个不是语法定义的,一般约成的)

宏定义的式子必须用()括号括起来

为什么使用宏定义

在C语言中,一般使用常数时候,都是不直接使用,而是把该常数定义个宏,然后在程序中使用宏,这样的好处是,等我们需要修改这个常数时,只需要在宏定义处修改一次即可

5.预处理

相关文章

  • 王道程序员求职宝典(四)结构体,共用体与枚举

    结构体,共用体与枚举 结构体结构体定义一些特性可继承访问方式构造/析构函数定义递归嵌套初始化结构体位字段整型或枚举...

  • Day11

    共用体 枚举 枚举的基本概念 枚举的作用域枚举作用域和结构体作用域一样, 定义枚举变量和结构体一样 局部变量和全局...

  • Day7

    学习内容:结构体、共用体、枚举(1/2)收获: 了解了结构体变量的定义与使用 了解了结构体数组的使用; 了解了结构...

  • C语言学习之十——共用体、枚举类型和typedef

    共用体1.1共用体的概念 :使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。1.2 定义共用体类型...

  • 9.结构体与共用体

    1.共用体 共用体的概念 : 使几个不同的变量共占同一段内存的结构称为 “共用体”类型的结构。 定义共用体类型变量...

  • C结构体、共用体、枚举

    一、结构体 (1)类型声明 注意,这一步操作只是声明了一个类型struct student,不占据栈空间或堆空间。...

  • 慕课网-Linux C语言结构体-学习笔记

    Linux C语言结构体 编译指令:预处理,宏定义, 建立自己的数据类型:结构体,联合体,动态数据结构 逻辑运算符...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • C语言和OC的结构体(struct)

    Struct(结构体) 1.结构体定义 2.结构体变量 3.结构体数组 4.C语言结构体指针 5.C语言共用体 6...

  • swift3语法(八)

    枚举/结构体 枚举 定义形式enum 枚举名 { 枚举值} // 例如enum CompassPoint {...

网友评论

      本文标题:结构体,共用体,枚举,宏定义,预处理

      本文链接:https://www.haomeiwen.com/subject/kfxlgdtx.html