【C语言程序设计】知识点汇总5——结构体与共用体

简介: 【C语言程序设计】知识点汇总5——结构体与共用体

8 结构体与共用体


8.1 结构体声明与定义

//1先声明后定义
struct 结构体名
{
    成员列表
};//最后的分号不可丢
struct 结构体名 变量名;
//2声明与定义同时进行
struct student
{
    int num;
    char name[20];
    int age;
    char sex;
    float score;
}stu1,stu2;
//3直接定义变量
struct
{
    int num;
    char name[20];
    int age;
    char sex;
    float score;
}stu;


8.1.3结构体变量的初始化

可以在定义时完成初始化,也可以定义之后初始化(要保证数据元素相互对应)


8.1.4结构体变量的引用

结构体变量名.成员名


8.1.5 结构体数组

stuct student stu[3];


8.2 指向结构体类型的指针

结构体变量占用一定的内存空间。是该变量所占据的内存段的起始地址。

如果使用指针操作,可以使用“->”运算符来访问结构体中的数据成员。

{
    p->num;
    //等价
    (*p).num;
}


8.3 结构体变量做函数的参数

三种方法:

  • 每一个结构体成员,作为简单变量传递
  • 整个结构体做参数
  • 传递指向结构体的指针


8.4 (*)共用体

节省内存,共用体变量所占长度等于最长的成员的长度。


特点:

  • 统一内存段可以用来存放几种不同类型的成员,但每一瞬间只能存放其中一种
  • 共用体变量中起作用的成员是最后一次存放的成员
  • 共用体变量地址及其成员的地址都是同一地址
  • 不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可以使用指向共用体变量的指针
  • 共用体可以出现在结构体中,结构体、数组等也可以成为共用体的成员。
目录
相关文章
|
6天前
|
C语言
C语言结构体内存对齐
C语言结构体内存对齐
|
9天前
|
存储 编译器 Linux
【C语言】自定义类型:结构体深入解析(二)结构体内存对齐&&宏offsetof计算偏移量&&结构体传参
【C语言】自定义类型:结构体深入解析(二)结构体内存对齐&&宏offsetof计算偏移量&&结构体传参
|
6天前
|
存储 C语言
C语言自定义类型结构体详解
在C语言中,结构体是复合数据类型,能组合不同类型的数据显示。定义结构体用`struct`关键字,如`struct Student {char name[20]; int age; float score;};`。声明结构体变量如`struct Student stu1;`,访问成员用`.`操作符,如`stu1.age = 20;`。初始化可直接赋值`struct Student stu1 = {"李四", 22, 85.5};`。结构体数组如`struct Student stuArray[3]`,结构体指针如`struct Student *pStu = &stu1;`。
5 0
|
9天前
|
存储 搜索推荐 编译器
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
|
9天前
|
存储 网络协议 编译器
【C语言】自定义类型:结构体深入解析(三)结构体实现位段最终篇
【C语言】自定义类型:结构体深入解析(三)结构体实现位段最终篇
|
11天前
|
存储 编译器 C语言
C语言核心知识点总结
C语言核心知识点:包括数据类型(整型、字符型、实型、枚举型)、运算符(算术、关系、逻辑、位、赋值)、控制语句(条件、循环、跳转)、函数、指针、数组、结构体和预处理器(宏定义、条件编译)。这些概念构成了C语言的基础,支持高效系统及应用软件开发。
15 5
|
21天前
|
存储 网络协议 编译器
C语言第三十一弹---自定义类型:结构体(下)
C语言第三十一弹---自定义类型:结构体(下)
|
6天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
15 0
|
17天前
|
编译器 C语言 C++
【C语言】memset()函数(内存块初始化函数)
【C语言】memset()函数(内存块初始化函数)
23 0