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

day14-C语言-指针函数

1.函数指针,指针函数
1. 指针函数,函数的返回值是 指针类型 。

1), 不能返回,是局部作用域的指针。
2) ,希望函数,可以连续调用。 在同一个语句里面。 strcpy(str1,strcpy(str3,str2));
3)希望返回一端内存区域 (数组,堆空间)。

2. 函数指针
前面介绍的指针,基本都是指数据。
函数指针 ,指向一个函数。本质,指针变量;
函数名,是地址值。里面储存的代码,对数据进行加减乘除操作的。
目的,
避免代码的重复。 方便后期代码的扩展。函数功能的解耦合。

回调函数, 一个函数被当作参数 ,传递给另外一个函数。 被传递这个参数(函数指针,回调函
数);被动调用。主调函数只是传参(函数)

语法 int add(int a, int b) // int (*) (int,int) { return a + b; } int main(int argc, char **argv) { int (*p)(int, int) = add; // p 函数指针。 add 不能写成add(), 不是对add函数的调用 int a = 10; int b = 20; int ret = 0; ret = add(a, b); printf("add() is %d\n", ret); ret = p(a, b); // 通过函数指针 对函数的调用 printf("p() is %d\n", ret); return 0; }
int div3(int num) // div3 -> int (*) (int) { return 0 == num %3; } int div5(int num) // div3 -> int (*) (int) { return 0 == num %5; } // int (*fun) (int) 函数指针 void find_num(int* a,int size, int (*fun) (int) ) { for(size_t i=0;i<size;i++) { if( fun(a[i])) // if( div5(a[i])) { printf("%d\n",a[i]); } } } int main(int argc, char **argv) { int a[10]={0}; fill_array(a,10); //find_num3(a,10); find_num(a,10,div5); // 传递函数名给 find_num return 0; }

typedef 关键字
取别名, 给数据类型取别名

1 普通数据类型 去别名

typedef 老数据类型名 新数据类型名 typedef unsigned char u8; typedef unsigned short u16; typedef char s8; int main(int argc, char **argv) { u8 a; // unsigned char u16 b; // unsigned short s8 c; // char return 0; }

2. 简化函数指针的写法

PFUN 是一个类型名 typedef int* (*PFUN)(int ,int ,char* ); // int* func(int a,int b ,char* c) // int* (*)(int ,int ,char* ) // { // return NULL; // } // int func2(int a,int b, int* (*pfun)(int ,int ,char* )) // { // return 0; // } int* func(int a,int b ,char* c) // int* (*)(int ,int ,char* ) { return NULL; } int func2(int a,int b, PFUN pfun) // int a; { char str[]={0}; pfun(1,2,str); return 0; }
http://www.jsqmd.com/news/813571/

相关文章:

  • 基于Markdown与Vue的交互式演示文稿框架Slide-Sage详解
  • Web3信息聚合工具:本地化、无依赖的桌面应用设计与实现
  • Skeleton骨架系统:基于Tailwind CSS的现代前端UI架构实践
  • 2026届学术党必备的六大AI论文工具推荐榜单
  • Goodable桌面AI工作台:双模式Skills架构与自动化实战指南
  • 管理学方向学数据分析有用吗?对就业竞争力和岗位匹配帮助有多大
  • ARM调试器AXD核心功能与实战技巧详解
  • 如何快速搭建Sunshine游戏串流服务器:终极自托管指南
  • sprout-os:基于Arch Linux的创意工作者专属操作系统深度解析
  • all-net-search-read:构建聚合搜索与阅读一体化的本地信息工作台
  • 苏州沃虎电子(VOOHU)电流互感器WHPT-ER115-009产品介绍
  • LlamaGen:自回归模型在图像生成领域挑战扩散模型
  • 在Anaconda环境中快速配置Python调用Taotoken大模型API的完整指南
  • zcc:零配置C语言构建工具的设计原理与工程实践
  • 插旗子法-告别TLE超时!一文看懂算法利器——“差分数组”(附详细图解与代码)
  • 靠谱多模型聚合平台供应商盘点 为AI项目匹配靠谱合作伙伴
  • 扣图操作方法完全指南:一键去背景,从小白到高手只需3步
  • 手把手教你用PyTorch 0.4.1复现D-LinkNet道路分割(附完整代码与数据集)
  • 智慧巡检-基于改进RT-DETR的道路交通小目标检测系统(含UI界面、yolov8、Python代码、数据集)基于 PyTorch 和 PyQt5 RT-DETR 或 YOLOv8
  • ComfyUI-WanVideoWrapper完整指南:从零开始掌握AI视频生成神器
  • EvaDB:用SQL驱动AI,重塑数据库应用开发范式
  • 6AV6648-0AC11-3AX0操作面板
  • PB9实战:数据窗口的强大能力与复杂应用之一(以医保门诊发票打印为例)
  • VS Code 修改 C++ 标准同时修改错误检测标准
  • 基于DuckyClaw框架的智能家居设备开发:从原理到量产实践
  • 苍穹外卖 项目记录 第六天
  • srcdoc属性怎么内嵌HTML_iframe直接注入【技巧】
  • EDA数据管理难题的通用解法:规则引擎驱动的设计对象抽象
  • 深耕高性价比多模型聚合平台赛道,这些企业值得重点关注
  • 扼流圈GNSS监测站