函数指针学习
认识函数指针:



函数指针的用处:
回调函数(以函数指针为参数的参数)

定义带标签的结构体
typedef struct mode {
int data;
} Node;
-
标签(
mode):mode是结构体的标签名。在这种定义中,mode是结构体类型的名称,但Node是通过typedef创建的别名。 -
好处:
- 标签的存在: 标签
mode使得你可以在结构体类型的定义中引用自身(对于自引用结构体类型)。如果结构体内部有指向自身的指针时(如链表中的next指针),标签是必要的。 - 自引用: 如果你需要在结构体中使用指向相同类型的指针(例如链表中的
next和pre),标签是必须的。
- 标签的存在: 标签
定义不带标签的结构体
typedef struct {
int data;// 不能在此处使用指向自身的指针,因为没有标签
} Node;
-
无标签: 结构体没有指定标签名。在这种情况下,结构体只能通过
Node类型进行引用。 -
好处:
- 简洁: 如果结构体类型不需要在其他地方引用(例如,内部定义结构体),或者结构体类型是临时的且只用于
typedef生成别名时,可以省略标签。 - 局部性: 当你不需要在结构体定义中引用自身时(例如,没有自引用的情况),不使用标签可以使定义更加简洁。
- 简洁: 如果结构体类型不需要在其他地方引用(例如,内部定义结构体),或者结构体类型是临时的且只用于
总结和应用场景
-
带标签的结构体:
- 当结构体类型需要引用自身时,例如在链表、树等数据结构中。
- 当你希望结构体在其他地方有额外的引用能力。
-
不带标签的结构体:
- 当结构体类型仅用于定义和别名创建,且不需要自引用或外部引用时。
- 当定义的结构体非常简单,仅用于某个特定的、局部的目的。
typedef用法:

例子:

关于typedef的别名定义
1、

2、

万能指针充当函数指针:
万能指针:空类型的指针void*p
万能指针能操作如何类型的指针,在使用前要做强制类型转换
指针的两个类型:1、指针的类型(变量的类型): (取代掉变量名就行了)
2、指针所指向的类型 指针要操作的数据: (去掉变量名和*)
例:

const的使用:

1、*前的const写前写后没区别
所以 const int x=1;和int const x=1;是等效的
作用是修饰数据类型,它是修饰指针所指向的数据的类型
所以const int *x的 *x不能变
2、int const* x修饰的是指针变量,不能修改指针变量的指向(相当于x不能变)
就这两种情况,上述的四个示例都可以由这两种组合
数组指针和指针数组:
哪个在后面,他就是什么
整形数组:------->数组 拥有多个变量名有规律的整形变量
数组指针:------->指针 :一般是用来操作二维或者多维数组

指针数组:------->数组 拥有多个指针名有规律的指针变量 组的 :一般是用来表示字符串的

函数指针的应用:
用作
[0基础必看][函数指针妙用]原来同学们并不知道我们的驱动接口怎么用_哔哩哔哩_bilibili
屏幕驱动里用结构体存储iic的函数指针,在屏幕驱动里只调用结构体里的函数,至此屏幕驱动与iic解耦,iic的绑定从编译阶段推迟到了运行阶段
相关文章:
函数指针学习
认识函数指针: 函数指针的用处: 回调函数(以函数指针为参数的参数) 定义带标签的结构体 typedef struct mode { int data; } Node; 标签(mode): mode 是结构体的标签名。在这种定义中,mo…...
『功能项目』武器的切换实例【34】
本章项目成果展示 我们打开上一篇33战士的A键连击的项目, 本章要做的事情是按键盘E键切换职业时切换手中的武器 首先在资源商店下载免费的武器模型 创建一个空物体 命名为WeaponPos 将武器预制体拖拽至WeaponPos (注意调整空物体位置就可以后续文章会更…...
github中action作用和讲解
1,简介 GitHub Actions 是 GitHub 的一个自动化功能,它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务,比如: 自动测试:每当代码被推送到仓库时,自动运行测试…...
数据库管理-第238期 23ai:全球分布式数据库-架构与组件(20240904)
数据库管理238期 2024-09-04 数据库管理-第238期 23ai:全球分布式数据库-架构与组件(20240904)1 架构图2 分片数据库与分片3 Shard Catalog4 Shard Director5 Global Service6 管理界面总结 数据库管理-第238期 23ai:全球分布式数…...
GIT | git提交注释自动添加信息头
GIT | git提交注释自动添加信息头 时间:2024年9月6日10:20:11 文章目录 GIT | git提交注释自动添加信息头1.操作2.commit-msg文件 1.操作 2.commit-msg文件 #!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit&q…...
React 全屏问题解决方案
1、全屏下弹窗被遮挡的问题 参考:https://www.jianshu.com/p/b22d1ad9533e 原因: 需要全屏的节点部分被传入 screenfull 中,弹窗的层级永远低于全屏,所以被遮挡。 解决方法: 方式1:把整个 body 全屏&…...
Java JVM 垃圾回收算法详解
Java 虚拟机(JVM)是运行 Java 应用程序的核心,它的垃圾回收(Garbage Collection, GC)机制是 JVM 中非常重要的一个部分。垃圾回收的主要任务是自动管理内存,回收那些不再被使用的对象,从而释放内…...
hadoop dfs web页面访问增加鉴权
前言 装好了Hadoop,通过浏览器访问,发现竟然不需要鉴权就能访问,且暴露了很多服务器层文件路径信息,基于多年积累的安全意识,必须得配置些鉴权信息,就有了该文,仅做学习记录,下次自…...
LCP 485. 最大连续 1 的个数[lleetcode -11]
从今天起,我们的算法开始研究搜索,首先就是DFS深度优先搜索(depth-first seach,DFS)在搜索到一个新的节点时,立即对该新节点进行遍 历;因此遍历需要用先入后出的栈来实现,也可以通过…...
关于宏任务的说法已经过时
关于宏任务w3c的最新解释,(mdn已经搜不到宏任务队列) ● 每个任务都有一个任务类型,用一个类型的任务必须在一个队列,不同类型的任务可以分属不同的队列。在一次事件循环当中,浏览器可以根据实际情况从不同…...
Java箱与泛型
大O的渐进表示法 大 O 的渐进表示法 去掉了那些对结果影响不大的项 ,简洁明了的表示出了执行次数。 void func1(int N){ int count 0; for (int i 0; i < N ; i) { for (int j 0; j < N ; j) { count; } } for (int k 0; k < 2 * N ; k) { count; } in…...
QT如何判断一个文件是否存在
在Qt中,判断一个文件是否存在是一个常见的操作,可以通过QFile类和QDir类来实现。不过,对于简单的文件存在性检查,QFile类提供的接口更为直接。下面是一个使用QFile类来判断文件是否存在的例子: #include <QFile>…...
Vim笔记
【指尖飞舞:vscode vim 高效开发(系列视频)】https://www.bilibili.com/video/BV1z541177Jyp16&vd_source23e4761174881d73295e362ffd706749 Vscode vim插件配置-CSDN博客 g_跳到行尾最后一个非空字符 gd :go to definition ctrl (o): …...
宝塔部署Vue项目解决跨域问题
一、前言 使用宝塔面板部署前端后端项目相比用命令行进行部署要简单许多,宝塔的可视化操作对那些对Linux不熟悉的人很友好。使用宝塔部署SpringBoot后端项目和Vue前端项目的方法如下: 1、视频教程 2、文字教程1 3、文字教程2 以上的教程完全可以按照步骤…...
C++智能指针简述
auto_ptr 设计目的:超出作用域,自动释放内存。所有权传递:拷贝auto_ptr时,原指针失效,释放所有权;新指针获得所有权。总而言之,允许通过拷贝转移所有权,独占所有权。缺陷࿱…...
龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮
本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以…...
Android Camera系列(二):TextureView+Camera
两岸猿声啼不住,轻舟已过万重山—李白 Android Camera系列(一):SurfaceViewCamera Android Camera系列(二):TextureViewCamera Android Camera系列(三):GLS…...
DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】
目录 1、DFS算法简介 2、算法实战应用【leetcode】 2.1 计算布尔二叉树的值 2.1.1 算法原理 2.1.2 算法代码 2.2 求根节点到叶节点数字之和 2.2.1 算法原理 2.2.2 算法代码 2.3 二叉树剪枝 2.3.1 算法原理 2.3.2 算法代码 2.4 验证二叉搜索树 2.4.1 算法原理 …...
AWS SES服务 Golang接入教程(排坑版)
因为刚来看的时候 也迷迷糊糊的 所以 先讲概念 再上代码 一 基础设置 这里需要完成两个最基础的设置任务 1 是验证至少一个收件电子邮箱 2 【很关键】是验证发送域。即身份里的域类型的身份。(可以理解为配置你的域名邮箱服务器(SMPT)为亚马…...
Vite + Vue3 +Vant4出现Toast is not a function
今天写前端的时候出现了这个问题搞了我一会 搜集原因: 1:是vant版本的问题,Toast()的方法是vant3版本的写法,而我用的是vant4,vant4中的写法改成了showToast()方法,改正过来 import {showToast} from "vant"; 发现还是…...
保姆级教程:在Ubuntu 20.04上搞定Isaac Gym Preview 4和强化学习环境(含常见libpython报错解决)
保姆级教程:在Ubuntu 20.04上搞定Isaac Gym Preview 4和强化学习环境(含常见libpython报错解决) 刚接触Isaac Gym的机器人/强化学习新手,往往会在环境配置阶段遇到各种依赖问题。本文将提供一个从零开始的详细安装指南,…...
PostGIS中ST_Area计算面积时单位转换的实用技巧
1. 为什么ST_Area在WGS84坐标系下计算结果不对劲? 第一次用PostGIS的ST_Area函数计算地理围栏面积时,我盯着屏幕上那个小得离谱的数字愣了半天——0.000002?这还没我家卫生间大!后来才发现,原来90%的新手都会在这个坑里…...
FixPlus-v1.56.148 一键擦除,会员功能直接解锁
核心功能 AI智能擦除技术可精准识别并移除照片中的干扰元素(如路人、杂物),自动填补背景,处理效果自然无痕。AI换衣功能支持智能服装替换与风格调整,为创意编辑提供更多可能。 操作便捷性 无需专业技巧,通…...
Multisim新手必看:用差分放大电路课设,手把手教你搞定仿真与波形分析
Multisim新手必看:用差分放大电路课设,手把手教你搞定仿真与波形分析 第一次打开Multisim时,满屏的元器件和复杂的参数设置确实容易让人望而生畏。记得我大三做模电课设时,光是找齐差分放大电路需要的元件就花了半小时,…...
EcomGPT-7B模型文件结构与代码解读:从Hugging Face到生产部署
EcomGPT-7B模型文件结构与代码解读:从Hugging Face到生产部署 如果你已经玩过一些开箱即用的AI模型,可能会好奇,一个像EcomGPT-7B这样的模型,它到底是由哪些文件组成的?那些配置文件里密密麻麻的参数都是什么意思&…...
5分钟搞定!Windows直接安装APK的终极免费方案
5分钟搞定!Windows直接安装APK的终极免费方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想在Windows电脑上直接安装安卓应用,却因…...
告别视图切换混乱:用快马平台和cc-switch提升前端开发效率
告别视图切换混乱:用快马平台和cc-switch提升前端开发效率 最近在开发一个需要多工作模式切换的项目时,遇到了视图管理混乱的问题。不同模式下的UI组件互相干扰,状态管理变得异常复杂。经过一番摸索,我发现cc-switch这个方案能很…...
Z-Image-Turbo镜像实战教程:开箱即用,9步生成高清图片
Z-Image-Turbo镜像实战教程:开箱即用,9步生成高清图片 1. 为什么选择Z-Image-Turbo镜像 如果你正在寻找一个能快速生成高质量图片的AI工具,Z-Image-Turbo镜像可能是目前最省心的选择。这个镜像最大的优势在于它已经预置了完整的32GB模型权重…...
基于 stm32 智能水壶的设计与实现
收藏关注不迷路!! 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多…...
【完整源码+数据集+部署教程】光纤缺陷检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
一、背景意义 随着光纤通信技术的迅猛发展,光纤作为信息传输的主要媒介,其质量的优劣直接影响到通信系统的性能和稳定性。光纤在生产、运输和安装过程中,可能会出现各种缺陷,如划痕、气泡、折弯等,这些缺陷不仅会导致信…...
