指针【理论知识速成】(5)

一.回调函数:

1.什么事回调函数:通过函数指针调用函数

2.应用例子:

https://blog.csdn.net/hot_water_oh/article/details/136572650?spm=1001.2014.3001.5501
(此链接为提到转义表所在博客的链接)
依然以转义表为例,

#include<stdio.h>
int add(int a, int b)
{return a + b;
}
int sub(int a, int b)
{return a - b;
}
int dul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}
void calc(int (*pf)(int,int))//这个部分就是在进行函数回调
{int ret = 0;int x, y=0;printf("输⼊操作数:");scanf("%d %d", &x, &y);ret = pf(x, y);printf("ret = %d\n", ret);
}
int main()
{int input = 0;int x = 0;int y = 0;scanf("%d", &input);do{switch (input){case 1:calc(add);//break;case 2:calc(sub);//break;case 3:calc(dul);//break;case 4:calc(div);//break;case 0:break;}} while (input);return 0;
}

倒不是说学会这部分很关键,但是这部分对优化代码帮助蛮大

二.qsort【原理是快速排序】

1.含义:

2.1.1含义:qsort是一个能为数组元素进行排序库函数

qsort 作为库函数,当然有他的头文件#include<stdlib.h>

2.1.1组成:

qsort ,的组成分为四部分,分别为:
qsort(arr, sz, sizeof(int), cmp)
在这里插入图片描述
在这里插入图片描述

2.代码应用

#include<stdio.h>
#include<stdlib.h>
int cmp(const void* a, const void* b)//
{return (*(int*)a - *(int*)b);
}
int main()
{int arr[] = { 1,9,3,6,8,7 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(int), cmp);//int i = 0;for (i = 0; i < sz; i++){printf("%d", arr[i]);}return 0;
}
//输出结果为1 3 6 7 8 9

3.用处qsort详解:

除了可以对数字进行排序,同样可以依靠qsort对字符串等进行排序。

三.结构体指针:

1.什么是结构体:

#include<stdio.h>
struct stu //
{char name[20];int age;
};
int main( )
{struct stu s= { "zhang",20 };//printf("%s %d", s.name, s.age);return 0;
}

2.结构体指针

与之前学过的整形指针,字符指针,数组指针做类比,得出结构体指针就是指针类型为结构题的指针

#include<stdio.h>
struct stu 
{char name[20];int age;
};
int main( )
{struct stu s= { "zhang",20 };printf("%s %d", s.name, s.age);struct stu* ps = &s;//printf("%s %d", (*ps).name, (*ps).age);//printf("%s %d", ps->name, ps->age);//这样也可以访问return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

drone ci 是什么

Drone CI是一个开源的持续集成和持续部署&#xff08;CI/CD&#xff09;系统&#xff0c;它使用Docker容器技术自动化软件的构建、测试和部署过程。Drone的设计哲学是简单和易用&#xff0c;通过使用Docker容器&#xff0c;它可以很容易地创建隔离的环境来运行测试和部署任务&a…

详细讲解Xilinx DDR3 的MIG IP生成步骤及参数含义

前几篇文章讲解了SDRAM到DDR3各自的变化&#xff0c;本文讲解如何使用DDR3&#xff0c;在Altera的Cyclone IV开发板上一般会使用SDRAM作为存储数据的芯片&#xff0c;而Xilinx的S6和7000系列一般使用DDR3作为存储数据的芯片。 从SDRAM芯片内部结构分析其原理&#xff0c;从内部…

从空白镜像创建Docker hello world

文章目录 写在前面基础知识方法一&#xff1a;使用echo工具方法二&#xff0c;使用c语言程序方法三&#xff0c;使用汇编语言小结 写在前面 尝试搞了下docker&#xff0c;网上的教程大多是让下载一个ubuntu这种完整镜像&#xff0c;寥寥几篇从空白镜像开始创建的&#xff0c;也…

SpringBoot自定义banner,自定义logo

SpringBoot自定义banner&#xff0c;自定义logo 在线网站 http://www.network-science.de/ascii/?spma2c6h.12873639.article-detail.9.7acc2c9aSTnQdW https://www.bootschool.net/ascii?spma2c6h.12873639.article-detail.8.7acc2c9aSTnQdW https://patorjk.com/softwa…

官方安装配置要求服务器最低2核4G

官方安装配置要求服务器至少2核、4G。 如果服务器低于这个要求&#xff0c;就没有必要安装&#xff0c;因为用户体验超级差。 对于服务器CPU来说&#xff0c;建议2到4核就完全足够了&#xff0c;太多就浪费了&#xff0c;但是内存越大越好&#xff0c;最好是4G以上。 如果服务器…

贝叶斯优化的门控循环神经网络BO-GRU(时序预测)的Matlab实现

贝叶斯优化的门控循环神经网络&#xff08;BO-GRU&#xff09;是一种结合了贝叶斯优化&#xff08;Bayesian Optimization, BO&#xff09;和门控循环单元&#xff08;Gated Recurrent Unit, GRU&#xff09;的模型&#xff0c;旨在进行时序预测。这种模型特别适用于时间序列数…

VBA(学习笔记)

1. 数据类型 变量定义&#xff1a;Dim 变量名 As 数据类型 变量赋值&#xff1a;变量名 值 1.1 数值型 1.1.1 整数 (1) Byte&#xff1a;1字节&#xff08;0~255&#xff09; (2) Integer&#xff1a;2字节&#xff08;-32768~32767&#xff09; (3) Long&#xff1a;4…

【网络应用层协议】【MQTT】详解消息队列遥测传输协议MQTT(超详细)

目录 1. MQTT 协议简介 2. MQTT 的特点 3. MQTT 协议原理 4. MQTT协议中的订阅、主题、会话 1. MQTT 协议简介 MQTT&#xff08; Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议 &#xff09;是一种消息列队传输协议&#xff0c;采用订阅、发布机制&…

arcgis栅格数据处理3——定义投影(同样适用于其他类型文件)

进行数据连接时可能出现未设置投影无法链接的情况&#xff0c;需要先定义投影 点击最右侧“目录”&#xff0c;弹出带有系统工具的面板&#xff0c;点击“data management tools”点击“投影”&#xff0c;“定义投影”

Redis的缓存穿透?缓存击穿?缓存雪崩?

缓存穿透 什么是缓存穿透&#xff1f; 假如我们有一个学生表一共有10条数据&#xff0c;对应的id为1-10。我们有一个请求是通过id去查询学生的信息。正常的流程是请求先到redis里面去找&#xff0c;如果命中就将查询到的结果反回&#xff0c;如果没有就去mysql数据库中找&…

chatgpt与人类有何不同?

ChatGPT和人类之间存在多个显著的差异。 首先&#xff0c;ChatGPT是一种基于人工智能技术的计算机程序&#xff0c;通过机器学习和自然语言处理等技术&#xff0c;从大量的数据中获取知识并生成语言输出。它主要依赖于算法和数据进行工作&#xff0c;能够迅速处理和检索信息&a…

OpenCV(六)——对于图片的算术运行、图片的叠加操作、多通道图像拆分为多个单通道图像

在OpenCV中&#xff0c;可以对于图片进行算法运算。我们知道&#xff0c;图像的本质其实就是矩阵&#xff0c;因此对于图像的算数运算本质上就是对于矩阵的算术运算。在OpenCV可以对图像进行算术运算的操作有加、减、乘、除等操作。 图像的加、减、乘、除操作 两张图像可以进…

微信小程序开发系列(二十六)·小程序运行机制(启动、前后台状态、挂起、销毁)和小程序更新机制

目录 1. 小程序运行机制 1.1 启动 1.2 前台和后台状态 1.3 挂起 1.4 销毁 2. 小程序更新机制 1. 小程序运行机制 1.1 启动 小程序启动可以分为两种情况&#xff0c;一种是冷启动&#xff0c;一种是热启动。 冷启动&#xff1a;如果用户首次打开&#xff0c;或小…

数据挖掘案例分析、经典案例、技术实现方案

1.数据挖掘案例分析 数据挖掘&#xff1a;是从大量数据中发现有用信息和模式的过程。 数据挖掘案例分析&#xff1a;是指通过对已有数据进行挖掘和分析&#xff0c;发现其中的模式和规律&#xff0c;并根据这些发现提出相应的解决方案和决策建议的过程。 以下是一些常见的数据…

03-快速上手RabbitMQ的5种消息模型

RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件,有几个常见概念 connections(连接): 将来publisher(消息的发送者)或者consumer(消息的接收者)都需要先与MQ建立连接 channel(通道): 建立连接后需要创建通道,生产者和消费者就是基于通道完成消息的发送和接收 ex…

_note_06

1.说一说函数的按地址传递和按值传递&#xff0c;他们的区别是什么&#xff1f; 函数的参数传递方式可以分为按地址传递&#xff08;也称为按引用传递&#xff09;和按值传递两种方式。按值传递是指将实际参数的值复制给形式参数&#xff0c;即在函数调用时&#xff0c;实际参数…

探索云原生数据库技术:构建高效可靠的云原生应用

数据库是应用开发中非常重要的组成部分&#xff0c;可以进行数据的存储和管理。随着企业业务向数字化、在线化和智能化的演进过程中&#xff0c;面对指数级递增的海量存储需求和挑战以及业务带来的更多的热点事件、突发流量的挑战&#xff0c;传统的数据库已经很难满足和响应快…

2023年终总结——跌跌撞撞不断修正

目录 一、回顾1.一月&#xff0c;鼓足信心的开始2.二月&#xff0c;焦躁不安3.三月&#xff0c;路还是要一步一步的走4.四月&#xff0c;平平淡淡的前行5.五月&#xff0c;轰轰烈烈的前行6.六月&#xff0c;看事情更底层透彻了7.七月&#xff0c;设计模式升华月8.八月&#xff…

04hive数仓内外部表复杂数据类型与分区分桶

hive内部表和外部表 默认为内部表&#xff0c;外部表的关键字 &#xff1a;external内部表&#xff1a;对应的文件夹就在默认路径下 /user/hive/warehouse/库名.db/外部表&#xff1a;数据文件在哪里都行&#xff0c;无须移动数据 # students.txt 1,Lucy,girl,23 2,Tom,boy,2…

Kafka的分区机制

Kafka的分区机制是其核心功能之一&#xff0c;旨在提高可扩展性和并行处理能力。下面概述了Kafka分区的基本概念和工作原理&#xff1a; Kafka分区基本概念 分区&#xff08;Partition&#xff09;&#xff1a;Kafka中的主题&#xff08;Topic&#xff09;可以细分为多个分区…