当前位置: 首页 > news >正文

[c语言基础]构造函数,结构体学习使用

构造数据类型

基本数据类型:short int long char float void

指针类型

构造数据类型 节后提 共用体 枚举

1.结构体

int num / char ch / fioat f

如果没有办法使用当前类型描述,但是想描述学生这一类就要使用结构体进行

首先学习如何声明结构体

struct 名称

{

数据类型:成员1

成员1 成员2 ......//需要的基本数据类型(也就是已经有的数据类型int double float .....)

};

声明struct 名称 的一种结构体类型 是一种数据类型

比如构造一个年月

struct date

{

int year;

int mon;

int day;

};

struct datetime
{
struct date mdate;
struct time mtm;
};
struct datetime
{
truct date
{
int year;
int mon;
int day;
}mdate;
struct time
{
int hour;
int min;
int sec;
}mtm;
};

1.结构体的嵌套

struct datetime

{

int date

}

注意

声明结构体时候,结构体成员间用‘;’

结构体之间‘;’隔开

struct 后面的名称可以省略,省略后一个结构体

2.结构体变量定义

int num

struct nums定义一个s的变量

结构体类型 名称

struct num

{

int age;

int sorce;

int hight

} str;定义的变量名称

声明结构体类型的同时,定义了一个变量,变量的变量名mydate

3.结构体的初始化

全部初始化 strcut date mydat={2025,8.6}

部分初始化 strcut time time

truct date mydate =
{
//.year = 2024,
//.day = 6,
};

}

当我们在部分初始化进行定义的时候如果晒定义一个那么我们应该加一个点表示访问该元素

4.结构数据成员的访问

1.通过结构体变量访问结构体成员

结构变量名. 成员1;

结构变量名.成员2;

表达式的结果取决于成员的数据类型

mydate,year;

2.通过结构体指针访问结构体成员

结构体指针-》成员1

结构变量变量名.成员1;表达式的结果取决成员的数据类型。

5.结构体的储存模式

结构体对齐原则:
1. 结构体成员在内存中存储时,成员必须存储在自己字节大小的整数倍位置;
2. 结构体整体占的内存大小,是结构体中最大成员字节数的整数倍。
注意:
1. 在不同位系统下,相同结构体在内存中占的字节空间可能不一样
原因:64位系统long/指针类型占8字节;32位系统long/指针类型占4字节。
2. 可以强制让结构体按指定字节数对齐。

#pragma pack(1) //强制结构体按1字节对齐
struct s
{
int a; //4
char b; //1
int c; //4
};
#pragma pack(

6.结构体作为函数进行参数的传递

如果再被调函数中修改结构体变量,则传递结构变量的地址

如果在函数中使用主调函数的结构体变量,可以传递值,也可以传递地址

7. 结构体数组

struct stu 数组名【元素个数】

struct stu 数组名元素 【元素个数】={{},{},{}};

数组名【下标】类型的华就是我们自定义的变量结构

8.共用体/联合体

1.语法

union 名称

{

数据类型,成员1

数据类型,成员2

};

1.共用体中所有成员公用一块空间;始终以最大变量的sizeof占用内存

2.共用体中字节数大小和

内存大小端

小端:内存的高地址存储高字节位,内存的地地址存储低字节位;

大端;内存的搞地质存储低字节位,内存的纸质存储的高字节位;

9.枚举

enum 没就相当于是全局定义的一个宏

每个里面都是整形常量,对已经定义部分可以进行按需递增(主要四要增强代码可读性)

1.枚举中都是整型常量,不需要写数据类型

2.枚举常量根据行业规范一般都是大写

3.没居中枚举常量,类似于整形符号常量,可以直接被引用

4.枚举中的常量用逗号隔开

5.枚举中如果没有给定常量,则默认从0开始

如果某个常量给赋值后,紧挨着后面的常量依次加一

一,枚举变量

enum 名称 变量名; 枚举变量是的枚举类型的整形

typedef关键字;为已有的 数据类型 进行 重命名

typedef struct stu stu_s 重新命名

http://www.jsqmd.com/news/1351601/

相关文章:

  • Python.三.(一)--1. 函数参数与高阶函数
  • 2026年gif转png工具盘点:在线网站、软件与单帧提取这几款就够了 - 耶斯去水印
  • 单片机中断机制:从轮询困境到事件驱动的异步处理核心
  • 施工企业采购申请与预算软件测评:蓝燕云采购管理控制
  • H指数算法解析:从学术评价到LeetCode解题
  • 广东的连锁餐饮餐具哪家靠谱? - 中媒介
  • 微小不对中 = 巨额损耗,AS500对中仪守住设备与电费成本
  • 使用 STL-GO 进行带时空与拓扑约束的多智能体规划
  • Linux硬链接与软链接原理详解:从Inode到ls/stat/find实战识别
  • Unity脚本生命周期管理:OnEnable/OnDisable自动注册与双缓冲列表实践
  • 养殖场与厂房彩钢瓦锈蚀严重,翻新施工企业怎么选?2026年行业深度观察 - 优质品牌商家
  • 冰蓄冷空调与冷热电联供微网优化技术解析
  • 廊坊选建筑装饰工程铝单板口碑厂家 - 中媒介
  • SpringBoot+Vue全栈二手交易平台开发实战
  • 2026年广东高低温试验箱实力厂家精选:小型/恒温恒湿/冷热冲击/步入式/防爆/快速温变全解析 - 优企名品
  • Java毕设实战:Spring Boot+小程序构建英语学习激励闭环系统
  • Unity Addressable资源管理系统:从核心原理到工程实践
  • 2026年heic转jpg最简单方法盘点:覆盖Windows、Mac、手机与在线免费方案 - 免费软件工具方法教程
  • 2026年304不锈钢三级过滤漏斗专业制造商哪家正规?3家优选甄选名单揭晓 - geo交流
  • Node.js 模块系统:CJS 与 ESM 详解
  • AI内容去味三步法:从塑料感到高级感的实战指南
  • 【二叉树】LC 104.二叉树的最大深度
  • 维修工程师的示波器实战:11 为什么有些问题,一测反而消失了?
  • AirLLM:在4GB显存的GPU上跑70B大模型,不需要量化
  • 泰安本地防水补漏哪家好?屋顶 卫生间 外墙 地下室 阳台堵漏师傅对比(2026年8月新) - 金信达
  • 0372-Raylib-调色板
  • 符合 GB 标准亲肤鞋品 - 中媒介
  • 2026年heic转png工具盘点:哪几款在线转换和免费方法更省心 - 软件小管家
  • 混合模型ANOVA:固定与随机效应的统计分析实践
  • 前端测试实战:从单元测试到E2E的完整指南