c语言的指针函数和函数指针的区别

指针函数是一个返回指针的函数。它的声明类似于普通函数,但是返回类型是指针类型而不是普通的数据类型。指针函数可以用来返回数组、结构体、对象等复杂的数据类型。

指针函数的定义和使用方式与普通函数类似,可以通过调用函数名来执行函数,并将返回值赋给一个指针变量。通过指针变量可以访问函数返回的指针所指向的数据。

以下是一个简单的指针函数示例:

#include <iostream>
using namespace std;int* createArray(int size) {int* arr = new int[size];for (int i = 0; i < size; i++) {arr[i] = i;}return arr;
}int main() {int size = 5;int* arr = createArray(size);for (int i = 0; i < size; i++) {cout << arr[i] << " ";}delete[] arr;return 0;
}

上面的示例中,函数createArray是一个指针函数,它创建了一个包含指定大小的整数数组,并返回该数组的指针。在main函数中,我们将函数返回的指针赋给arr指针变量,并通过arr访问数组中的元素,最后记得要释放内存。

函数指针是指可以存储函数地址的变量。在C语言中,函数名实际上就是函数的地址,因此可以将函数名赋值给一个函数指针变量。通过函数指针,可以动态地调用不同的函数。

函数指针的定义方式如下:

返回类型 (*函数指针变量名)(参数列表)

例如,定义一个函数指针变量p,它可以指向没有参数和返回值的函数:

void (*p)();

函数指针的赋值可以通过函数名直接赋值:

p = 函数名;

函数指针的调用可以通过指针变量后加括号来实现:

(*p)();

同时,也可以使用箭头操作符->来调用函数指针:

p();

函数指针的作用主要有两个方面:可以实现函数的回调(callback)和实现动态的函数调用。通过函数指针,可以将一个函数作为参数传递给另一个函数,实现不同函数之间的交互和协作。同时,函数指针也可以根据不同的条件,动态地选择调用不同的函数。

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

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

相关文章

Qt入门之概述

1.1 介绍 Qt&#xff1a;它是一套基于C的跨平台开发框架&#xff0c;包括GUI、字符串、多线程处理、文件IO、网络IO、3D渲染等时间&#xff1a;它诞生于1991年&#xff0c;由Haavard Nord和Eirik Chambe-Eng共同缔造发展&#xff1a;历经Qt Company、Nokia、Digia多个公司开发…

Seata 2.x 系列【9】事务会话存储模式

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 存储模…

在linux上发起get和post请,怎么写

获取用户 curl --location --request GET http://127.0.0.1:8888/API/UserService/GetUserInfo?&token123456789&userId66666666 下面接口参数两部分&#xff0c;url传参和body 新增用户 curl --location --request POST http://127.0.0.1:8888/API/UserService/AddUs…

ubuntu安装docker的详细教程

检查卸载老版本docker ubuntu下自带了docker的库&#xff0c;不需要添加新的源。 但是ubuntu自带的docker版本太低&#xff0c;需要先卸载旧的再安装新的。 注&#xff1a;docker的旧版本不一定被称为docker&#xff0c;docker.io 或 docker-engine也有可能&#xff0c;所以卸…

springboot RocketMQ 客户端 日志配置 rocketmq_client.log过大

项目集成rocketMQ后&#xff0c;日志持续增大&#xff0c;导致磁盘空间逐渐减少&#xff0c;参考官方文档 来正确配置。 打印客户端日志 RocketMQ 的 TCP Java SDK 基于 SLF4J 接口编程。 JavaSDK1.7.8.Final 版本及以上 RocketMQ 的 Java SDK 1.7.8.Final 已内置了日志实现&…

有关整数和浮点数在内存中存储

1. 整数在内存中的存储 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最 ⾼位的⼀位是被当做符号位&#xff0c;剩余的都是数值位。 正…

常用芯片学习——BME280芯片

BME280 温湿度气压传感器 芯片介绍 BME280是基于成熟传感原理的组合数字湿度、压力和温度传感器。该传感器块采用极为紧凑的金属盖LGA封装&#xff0c;占地面积仅为2.5x2.5mm2&#xff0c;高度为0.93mm。该传感器提供I2C以及SPI接口。它的小尺寸和低功耗允许在电池驱动的设备…

TCP-IP 知识汇总

开放式系统互联模型------国际化标准组织ISO提出----协议组&#xff08;协议模型&#xff09; 应用层&#xff1a;接收用户数据&#xff0c;人机交互的接口 表示层&#xff1a;将编码转换为二进制&#xff08;加密、解密&#xff09;---统一格式 会话层&#xff1a;针对传输…

二叉树<II>:二叉树的四种遍历方式代码实现Python3

今天我们来介绍的是二叉树的「前序」、「中序」、「后序」、「层序」四种遍历方式如何用代码实现。 还不知道这四种遍历方式原理的可以看另一篇文章&#xff1a;二叉树&#xff1c;I&#xff1e;&#xff1a;概念及二叉树的前序遍历、中序遍历、后序遍历原理 1. 相关题目 这…

springboot279基于javaweb的影院订票系统的设计与实现

影院订票系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本影院订票系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大…

MySQL语法分类 DML

DML 增删改表中数据 添加数据 //注意: //1.列名和值一一对应 //2.如果不定义列名需要给所有列赋值 //3.除了数字其他类型的值需要引号 insert into 表名(列名1&#xff0c;列名2,...列名n ) values(值1,值2,...值n );//这句需要给所有列赋值 insert into 表名(值1,值2,...值n…

2024.4.17周报

目录 摘要 Abstract 文献阅读&#xff1a;耦合时间和非时间序列模型模拟城市洪涝区洪水深度 现有问题 提出方法 创新点 XGBoost和LSTM耦合模型 XGBoost算法 ​编辑 LSTM&#xff08;长短期记忆网络&#xff09; 耦合模型 研究实验 数据集 评估指标 研究目的 洪水…

Orbit 使用指南 03 | 与刚体交互 | Isaac Sim | Omniverse

如是我闻&#xff1a; “在之前的指南中&#xff0c;我们讨论了独立脚本&#xff08; standalone script&#xff09;的基本工作原理以及如何在模拟器中生成不同的对象&#xff08;prims&#xff09;。在指南03中&#xff0c;我们将展示如何创建并与刚体进行交互。为此&#xf…

48、C++/堆区动态内存管理 类中特殊成员函数学习20240313

一、设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 代码&#xff1a; #include <iostream>us…

2024-03-14学习笔记(YoloV9)

1.认知越高的人&#xff0c;越敬畏因果 摘要&#xff1a;本文讲述了认知越高的人越敬畏因果的道理。通过故事和名人案例&#xff0c;阐述了敬畏因果对于个人成长和成功的重要性。文章强调了遵循规律、不走捷径、正向思维的重要性&#xff0c;以及思维、行动、习惯、性格和命运…

走进volatile的世界,探索它与可见性,有序性,原子性之间的爱恨情仇!

写在开头 在之前的几篇博文中&#xff0c;我们都提到了 volatile 关键字&#xff0c;这个单词中文释义为&#xff1a;不稳定的&#xff0c;易挥发的&#xff0c;在Java中代表变量修饰符&#xff0c;用来修饰会被不同线程访问和修改的变量&#xff0c;对于方法&#xff0c;代码…

Arduino RP2040 LittleFS的使用介绍

Arduino RP2040 LittleFS的使用 &#x1f4cc;RP2040基于Earle F. Philhower, III的开发核心固件&#xff1a;https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json&#x1f388;相关开发文档在线说明&#xff1a;https://ardu…

每日一题——LeetCode2789.合并后数组中的最大元素

方法一 倒序遍历&#xff1a; 将数组倒序过来看&#xff0c;就是从最后一个数开始&#xff0c;如果它前面一个数小于等于它就可以把前面一个数吃掉同时加上前一个数的值形成一个新的数&#xff0c;如果碰到一个更大的数就吃不动了&#xff0c;那么就换那个更大的数去继续吃前面…

实现两个超长正整数(每个最长80位数字)的减法运算。

定制魏&#xff1a;QTWZPW&#xff0c;获取更多源码等 [问题描述] 编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 [输入形式] 从键盘读入两个整数&#xff0c;要考虑输入高位可能为0的情况(如00083)。 1.第一行是超长正整数A; 2.第二行是超长正整数B; [输出形式] …

ts版本微信小程序在wxml保存文件不刷新页面的解决办法

将project.config.json中的skylineRenderEnable改为false "skylineRenderEnable": false