【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)(一)

简介: 【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)

结构体部分:(基础章部分)

一.结构体的基础知识

结构体是一些值的集合,这些值成为成员变量。结构的每个成员可以是不同类型的变量。

类型分类:

内置类型:char,short,int,long,long long(c99),float,double,bool(布尔)

自定义类型:结构体(struct),枚举(enum),联合体(union)

1.结构体的声明

结构体:

Struct:关键字

Tag:结构体标签

Member-list:成员列表

Variable-list:结构体变量

例:

*匿名结构体类型的声明

特点:

  1. 可以把结构体的名字去掉 
  2. 看似相同,编译器会把其当作不同的结构体类型

例:


2.访问结构体成员

有两种访问方式:

  • 结构体变量 . 结构体成员名(传值)
  • 结构体指针 ->结构体成员名(传址)

一:普通场景


二:结构体内嵌套结构体时


三:要修改的成员变量是字符数组时 (strcpy)

应使用strcpy;原因:数组名是首元素地址不可以覆盖

 


3.结构体传参

传参有两种类型:

  • 传值(传结构体变量)    
  • 传址(传结构体指针

PS:传值调用,形参是实参的临时拷贝,开辟还要占据空间。而传址调用仅仅传递地址,节省空间

有两种访问方式:

  • 结构体变量 . 结构体成员名(传值)
  • 结构体指针 ->结构体成员名(传址)

传值场景:

传址场景:

4.结构体的定义与初始化

一:结构体重命名(typedef)

注意点:

  • 实例化时,不用再次写struct  Node c(例:直接Node c)
  • 在重命名之前不可以使用Node

例:


二:结构体的创建(实例化)

结构体声明时可以同时创建多个变量/多个指针

例:

struct Book
{  
   char book_name[20];
   char author[20];
   int price;
   char id[15];
}sb3,sb4,*sb5;
等价于struct Book sb3,sb4;

三:结构体的初始化

结构体的初始化分为两种方式

  • 声明时直接创建
  • 单独创建按顺序创建/不按顺序创建)

例:

struct Book
{  
   char book_name[20];
   char author[20];
   int price;
   char id[15];
}sb3={"C++","超人",20,"MB666"};//声明时直接创建
strcut Book SB3={"C++","超人",20,"MB666"};//单独创建(按顺序创建)
strcut Book SB3={.price=20};//单独创建(不按顺序创建,直接索引)
不能直接修改成员列表中的数组,要用strcpy!!//详情见同一博客,“访问结构体成员”

自定义类型部分:(进阶部分)

一.自定义类型分类

自定义类型:

结构体(struct)

枚举(enum)

联合体(union)



相关文章
|
8月前
|
存储 编译器 C语言
C语言数据类型类型及语句(各种详细的细节以及基础+持续更新中
C语言数据类型类型及语句(各种详细的细节以及基础+持续更新中
171 0
C语言数据类型类型及语句(各种详细的细节以及基础+持续更新中
|
10月前
|
C语言
【C语言】规范掌握C语言函数|数组名的妙用|指针快速入门|综合使用小案例
【C语言】规范掌握C语言函数|数组名的妙用|指针快速入门|综合使用小案例
39 0
|
10月前
|
编译器 Linux C语言
C语言进阶学习日志:自定义类型 (细中细)(上)
C语言进阶学习日志:自定义类型 (细中细)
59 0
|
10月前
|
C语言
C语言进阶学习日志:自定义类型 (细中细)(下)
C语言进阶学习日志:自定义类型 (细中细)(下)
65 0
|
10月前
|
Linux
【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)(二)
【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)
|
10月前
|
存储 C语言
【C】数组——知识点大全(简洁,详细)(一)
【C】数组——知识点大全(简洁,详细)
|
10月前
|
编译器 C语言
【C】数组——知识点大全(简洁,详细)(二)
【C】数组——知识点大全(简洁,详细)
|
10月前
|
存储
【C】操作符——知识点大全(简洁,全面)(一)
【C】操作符——知识点大全(简洁,全面)
【C】操作符——知识点大全(简洁,全面)(二)
【C】操作符——知识点大全(简洁,全面)
|
11月前
|
存储 C语言 C++
进阶C语言 第四章-------《自定义类型》 (结构体、枚举、联合)知识点+完整思维导图+深入细节+通俗易懂+基本练习题+建议收藏(二)
进阶C语言 第四章-------《自定义类型》 (结构体、枚举、联合)知识点+完整思维导图+深入细节+通俗易懂+基本练习题+建议收藏(二)