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

C语言基础【20】:指针7

1.指针变量作为函数的返回值

1.1目的:通过函数返回合法空间,给到函数外部使用

1.2注意:函数不要返回动态局部变量的地址,他会在函数调用之后释放掉,进而出现输出不确定

1.3所以返回地址指向的变量应当为全局区的变量,就是不能为动态全局

2.二级指针

int* p = #
int** q= &p;
q=?
*q=?
**q=?

2.1q是p的地址,int**在定义时只表示q为二级指针。

2.2*q是等同于p,也就是num的地址

2.3**q等同于*p,也就是num

注意和前面提到的变量加&,类型加*        变量加*,类型减*是不同的,这里是等式,也就是同增共减。

3.函数指针:使用指针变量存放函数入口地址

3.1函数类型由形参和返回值决定,所以我们的指针也要给定形参和返回值类型

3.2定义时复制函数定义语句,然后把函数名换成(*p)即可,和数组指针类似(记得赋值函数入口地址)

#include <stdio.h>int add(int a, int b) {return a + b;
}int subtract(int a, int b) {return a - b;
}int main() {// 定义函数指针int (*operation)(int, int);// 指向add函数operation = add;printf("5 + 3 = %d\n", operation(5, 3));// 指向subtract函数operation = subtract;printf("5 - 3 = %d\n", operation(5, 3));return 0;
}

3.3函数指针的意义:作为其他函数的参数

3.4函数指针变量+1无意义,*也无意义

3.5函数的调用实际上就是函数入口地址加(),所以也可以用函数指针加()进行调用

4.函数指针数组

4.1定义:把函数名换成(*p[])即可

4.2初始化{}内部应该放入函数入口地址,即函数名

#include <stdio.h>// 菜单系统示例
typedef void (*MenuFunction)();void option1() {printf("执行选项1\n");
}void option2() {printf("执行选项2\n");
}void option3() {printf("执行选项3\n");
}int main() {MenuFunction menu[] = {option1, option2, option3};int choice;printf("请选择(1-3, 0退出): ");scanf("%d", &choice);while (choice != 0) {if (choice >= 1 && choice <= 3) {menu[choice - 1]();}printf("请选择(1-3, 0退出): ");scanf("%d", &choice);}return 0;
}

http://www.dtcms.com/a/393384.html

相关文章:

  • IC 数字逻辑设计中的硬件算法 01 记
  • 《棒球运动联盟》国家级运动健将标准·棒球1号位
  • AAC 详解
  • 蚂蚁集团DIVER登顶BRIGHT榜首,开源多阶段推理检索范式
  • 2013/12 JLPT听力原文 问题四
  • 挑战与应对:轻量化 AI 算法的成长烦恼
  • FPGA基础 -- CDC(Clock Domain Crossing)实战教程
  • 低碳经济:碳汇——从生态固碳到金融资产的价值转化
  • QGC 通信模块架构梳理
  • Application接口拓展功能(三)
  • 【Python】错误和异常
  • 【状态机实现】初识——基于状态机实现的流程编排和Activiti、Camunda、Flowable等工作流的区别
  • SpringBoot自动配置核心原理
  • Python 中的 Builder 模式实践 —— 以 UserProfileBuilder 为例
  • 探秘陌讯AIGC检测算法优化:详解MPS加速与模型热重载的实现原理
  • 1.3 管道(Pipe)核心知识点总结
  • GLUE:自然语言理解评估的黄金基准
  • 第13章 智能监测-设备数据处理
  • GEO技术科普
  • B004基于三菱FX2NPLC智能自提柜控制系统仿真
  • MTK CPU温度调节一知半解
  • V90伺服驱动器“速度模式“双极性模拟量速度控制
  • 课前练习题-20250919
  • C++类与对象
  • 企业级Docker镜像仓库Harbor
  • ESD防护设计宝典(七):生命线的秩序——关键信号线布线规则
  • 【ROS2】Beginner : CLI tools - 理解 ROS 2 话题
  • RL知识回顾
  • Java多线程编程指南
  • 【论文速读】基于地面激光扫描(TLS)和迭 代最近点(ICP)算法的土坝监测变形分析