Autoleaders控制组李佳旭——c语言结构体学习笔记

2024-03-03 23:40

本文主要是介绍Autoleaders控制组李佳旭——c语言结构体学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1枚举
    • 1.1常量符号化
    • 1.2enum函数
  • 2结构体
    • 2.1理解
    • 2.2结构体的定义
    • 2.3结构体形式声明
    • 2.4结构体初始化
    • 2.5结构运算
  • 3结构与函数
    • 3.1指向结构的指针
    • 3.2结构指针参数
  • 4结构中的结构
    • 4.1结构数组
    • 4.2嵌套结构
  • 5类型函数
  • 6 联合(union)

1枚举

1.1常量符号化

首先我们要知道,符合(字母)是相对更好理解的,它可以清晰的表达程序的意思。使用常量符号化可以增加程序的可读性。
在这里插入图片描述

1.2enum函数

   struct date today{int month;int day;int year;}d1,d2;

d1,d2中均有month, day, year三个成员。
第三种

struct {int month;int day;int year;}d1,d1;
  • 这个为无名结构,必须声明其变量,否则struct为无用结构体。
  • d1,d2中均有month, day, year三个成员。

2.4结构体初始化

与数组类似,结构体使用点号.获取单个成员。
然后通过={}的形式来输入struct在这里插入图片描述

2.5结构运算

  • 要访问整个结构,直接用结构变量的名字
  • 对于整个结构,可以做赋值、取地址,也可以传递函数参数。
d1=(struct date){10,28,2022};//相当于d1.month=10,d1.day=28,d1.year=2022.
d1=d2;//相当于d1.month=d2.month,d1.day=d2.day,d1.year=d2.year.

数组无法完成这些运算。

3结构与函数

3.1指向结构的指针

  struct date today{
int month;
int day;
int year;
}d1;
struct date *p =&d1;\\需要用&进行取地址(*p).month = 12;
p->month = 12;\\为了方便我们输入,用->来表示结构函数中的成员

3.2结构指针参数

使用方式:先传入一个指针,在这个内层函数中对指针进行一定的操作。之后通过我们定义的函数返回指针。最后在外部函数中,通过指针使用这个变量。(也就是说通过指针参数,我们把最内层的变量带到了最外层的main函数中)
在这里插入图片描述

4结构中的结构

4.1结构数组

形式如下

struct date d1[100];
struct date []={10,28,2022};

相对与数组中每一个成员的类型都为我们定义的结构体

4.2嵌套结构

#include <stdio.h>
struct point{int x;int y;};struct date{struct point p1;struct point p2;};struct date r;//这个就是嵌套类型的变量里面有r.p1.x;r.p1.y;r.p2.x;r.p2.y。

5类型函数

  • typedef(自定义类型函数)
  • 作用:给已经有的函数定义新的名字
    如:typedef int length;(特别注意typedef后面最后一个单词才算是新的名字,毕竟typedef是用来简化程序的,这样才能改善程序的可读性)
    - 这样 length就可以代替int出现在变量的定义上了
    如:length a,b;

6 联合(union)

  • union和struct的使用非常相似,他们的区别就在于union里的变量会占据同一个空间,空间的大小取决于union中占空间最大的变量。
  • 因为union的输入输出在同一个空间上,新输入的数据会覆盖原来的数据,这导致在输出上有一点难度。不过union在不同类型的输入和输出以及所占的空间等方面优势明显。
    使用形式如下
union arr{char a;int b;long c;long long d;};```

这篇关于Autoleaders控制组李佳旭——c语言结构体学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771304

相关文章

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a