C之指针函数和函数指针

C语言学习——指针精华(2) 字符指针作函数参数 [用函数调用实现字符串的复制] ⑴用字符数组作参数 #include <stdio.h> void copy_string(char from[], char to[]); int main() { char a[] = "I am a teacher."; char b[] = "You are a student."; printf("strin... 阅读详情

1 指针函数和函数指针

指针是指向一个地址,不管是一级指针、二级指针、多级指针,都是指向地址。指针本身也是一个变量。

指针函数----它是一个“函数”,返回值是一个 指针,也可以理解成是一个 内存地址。
函数指针----它是一个“指针”,指向一个函数,这种函数指针在编程中用的比较多,因为指针是可以改变赋值指向的,相当于可以实现多映射,玩法儿就灵活了。
辨别指针函数和函数指针,最简单的方式就是看函数名前面的指针*有没有被括号()包含,如果没有被包含,它就是一个指针函数,包含了,他就是一个函数指针。

2 指针函数

函数名前面的*没有被包含,函数返回类型是某一类型的指针,如下图所示:

int *f(x,y)

首先它是一个函数,只不过这个函数的返回值是一个地址,由于在CPU中,地址一般都是整型,所以指针函数返回基本上都是int,需要注意:
1) 返回的指针类型必须和函数的返回值类型一样,如上面的max函数返回值类型是int 类型,所以return后面必须是int类型
2)返回的指针即地址必须是合法的,指针函数不能返回指针函数中的局部变量
指针函数的作用:
可以在是代码更简洁并在一定程度节约内存;如当你需要返回一个数组中的元素时,你就只需返回首元素的地址给调用函数,调用函数即可操作该数组(让函数返回多个值)。
或者是malloc函数动态分配内存,返回该内存的地址给另外一个函数,另一个函数才好操作该内存。当然还有其他的作用,请读者自行在实践中体会。

3 函数指针

它首先是一个指针,指向函数的指针变量,即本质上是一个指针变量。例如:
int (*f)(int x); //声明一个函数指针
f = func; //将func函数的首地址赋值给指针f
指向函数的指针就包含了函数的地址入口地址,可以通过调用该指针,进而实现调用它指向的函数

函数指针的应用:
1)用函数指针调用函数
2)函数指针像普通指针一样作函数的形式参数
3)函数指针还有更高级的作用,如在分层设计和系统抽象的作用

参考猪哥

C语言 函数指针和指针函数用法 前言 函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。 今天这里只讲两... 阅读详情

相关推荐

C 指针和函数指针

指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:在这里,type是指针的基类型,它必须是一个有效的 C 数据类型,var_name是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:int *ip;/* 一个整型的指针 */ double *dp;

xiaoaque的博客 597

C语言 [指针] 用函数调用实现字符串的复制(字符型指针)

2022/11/24 [指针] 用函数调用实现字符串的复制(字符型指针)

fangzelin5的博客 4554

C语言里的函数指针、指针数组和函数指针数组

1.函数指针 函数指针也是一个指针变量,但这个指针存放的是一个函数的地址,以前的函数通过函数名来调用,现在也可以通过指针来调用,运用类比法理解,例如以前的**int p是一个整型变量,是一个指向一个整型数的指针 定义方式: 无参数的:void printwelcome(){} 指针方式:void (*p1)(); p1 = printwelcome;//把函数的名即地址赋给指针** 有参数的:int add(int a,int b){ } 指针方式:int (p2)(int a,int b){ } p2

weixin_51976284的博客 1178

使用指针实现字符串的复制

字符串复制C风格有调用系统函数strcpy,以及自己写(将字符一个一个地赋进去)。

m0_72760405的博客 4213

C/C++指针函数和函数指针

1、指针和函数 一.首先简要回顾一下指针和函数 函数简要的说就是完成某一个功能的代码块,其由返回值类型+函数名+(形参)还有具体代码组成(相信大家都懂的!);而指针(指针变量)是一种存放地址(内存单元的编号)的变量,因此通过指针可以指向相应地址中的内容。 2、指针函数 指针函数是指返回值类型是指针类型的函数,实质上就是最终该函数会返回一个地址或地址表达式给调用函数。其本质仍然是函数! 其函数原型为...

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2343

ABAQUS二次开发中创建SET

在ABAQUS中创建加载、边界条件时,需要使用set,创建set时需要使用对象集合对象中的Set函数,这个函数需要提供加入对象集合的列表,但这个对象列表好像并不能自行创建,只能通过ABAQUS各类对象集合中的findAt、getSequenceFromMask、getByBoundingSphere、getByBoundingCylinder或getByBoundingSphere函数得到,但这几个函数在直接使用PYTHON编程时都不太好用。这个函数返回一个字典,如下所示。

hohoyu的专栏 2482

C语言之指针05

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.youkuaiyun.com/qq_42680327 题目:通过输入指定行行数和列数打印出二维数组对应任一行一列元素的值 #include <stdio.h> void main(){ int a[3][4]={10,13,22,31,54,52,66,27,18,89,15,89}; in...

qq_42680327的博客 460

SKF SimPro Quick 4.8.1发布

发布说明可以在SimPro手册的SKF SimPro Quick应用程序的一般部分下找到(帮助→SKF SimPro快速手册→一般→发布说明)。请删除旧版本,请备份您存储在C:\SKF SimPro xxx\files文件夹中的文件以及所有自定义报告模板和表格。我们很高兴地通知您,我们的轴承应用工程软件SKF SimPro Quick 4.8.1可供下载。将新的安装文件下载到本地计算机后,双击它安装向导将打开(按照说明操作)3.安装后,在本地机器上启动SKF SimPro Expert软件。

小韩的博客 1818

有关字符的零碎知识点

字符变量 字符串常量 字符串用数组形式表示: char str[] = "i love china"; 输出:字符串  printf("%s\n",str);       字符   printf("%c\n",str[3]);// 数组中下标为3的字符; 注1:数值型数组,不能通过数组名,直接输出;  char *str = "i love china";

krysen的博客 229

Ansys Zemax与Speos协同设计:从HUD光学优化到驾驶环境可视化全流程解析

本文深入解析了如何利用Ansys Zemax与Speos进行协同设计,实现从HUD光学系统核心优化到驾驶环境可视化验证的全流程。文章强调了HUD设计是光学性能与视觉感知的深度耦合,通过Zemax进行精密光学设计,再利用Speos进行系统级仿真与感知模拟,最终完成从虚拟到现实的闭环验证,有效提升HUD产品的开发效率与可靠性。

weixin_29199873的博客 243

保姆级教程:2026版Windows电脑换新,微信QQ聊天记录无损搬家(附路径修改避坑指南)

本文提供2026版Windows电脑换新时微信QQ聊天记录无损迁移的保姆级教程,涵盖最新版微信/QQ的存储路径修改和避坑指南。通过详细步骤和实战技巧,确保数据迁移过程中不丢失任何珍贵对话记录和文件,特别适合需要保留完整聊天记录的用户。

weixin_42629815的博客 2480

C和C++,函数指针,指针函数,函数指针数组

这就是一个简单的指针函数的定义语法。运行结果如下:这是只是一个简单的例子,但是值得注意的我在指针函数里面加了,这样该变量的生命周期也就和全局的变量的生命周期一致了,也就是只有当整体全部程序运行结束的时候该变量才会被销毁,如果不加关键字,那么该变量,会在函数执行完毕时就被销毁掉,就不能接受到返回地址,返回的会是一个乱码。同样的运行方式得到的结果:可以看到两者之间明显的区别。

YYYYYYJJJJJYYYYY的博客 1892

ESP32-CAM与Thonny的完美搭配:从烧录到通信的完整流程

本文详细介绍了如何将ESP32-CAM与Thonny IDE完美结合,从固件烧录到通信测试的完整流程。通过硬件连接、MicroPython固件烧录、Thonny环境配置以及摄像头功能开发等步骤,帮助开发者快速搭建高效的物联网开发环境,实现图像采集与无线通信功能。

tomato的博客 1122

C语言函数指针和指针函数

写法不同可以简单粗暴的理解为,指针函数的是属于数据类型的,而函数指针的星号是属于函数名的。再简单一点,可以这样辨别两者:函数名带括号的就是函数指针,否则就是指针函数。

AnChenliang_1002的博客 2043

RDKit实战:5分钟搞定药物分子相似性分析(附Python代码)

本文提供了一套基于RDKit的快速药物分子相似性分析实战指南。通过Python代码演示,从环境搭建、分子指纹(如Morgan指纹)计算到Tanimoto相似性排序与可视化验证,帮助研究者在5分钟内完成从海量化合物库中精准筛选潜在活性分子的全流程,提升药物发现效率。

weixin_29193359的博客 314

LVGL core theme主题管理(lv_theme.c)

如果打开宏,主题的初始化是在显示设备注册时完成的。整个themes的实现放在目录下面。这里一共有三套主题(basic、default和mono)可供选择或者参考。源码中默认对接的是 default 主题,所以在中,看到的是调用default主题的接口。也就是说,如果需要更换主题,把这里面的接口换掉就可以了。或者要重新做一套主题,参考这些实现修改也就可以了。虽说有三套主题,但逻辑流程是一样的。主要完成两个工作:构造lv_theme_t结构体和初始化默认样多备用(style_init函数内实现)。构造。....

Bigan(安)的博客 3411

C和C++的函数指针

这里int (MyClass::*member_func_ptr)(int)是类成员函数指针的声明,通过(obj.*member_func_ptr)(3)或者(ptr->*member_func_ptr)(3)的方式来调用成员函数。在这个例子中,func_ptr只能指向参数为int的print函数,不能直接指向参数为double的print函数。与类成员函数的结合(需要注意):在 C++ 中,普通函数指针不能直接指向类的成员函数,因为类成员函数有一个隐含的this指针。,这两种写法在 C 语言中是等价的。

wgf350357114的博客 1733

Arduino ESP8266自定义配置分区表

ESP8266自定义分区表配置 随着项目的不断开发,项目文件也不断在增大,在没有考虑更换主硬件的条件下,最大开发利用有限资源势在必行,所以今天带来ESP8266自定义分区表的配置。 我这里以版本:2.7.4版本为例,后面的版本也是支持的。 注意:自定义分区表特别要注意和你的硬件相对应,flash芯片的大小决定这个分区是否有效,否则有意想不到的事情发现。 自定义分区表的几个重要参数 /* Flash Split for 4M chips */ /* sketch @0x40200000 (~1019K

perseverance51博客 1725

C语言——指针函数和函数指针

返回值为指针的函数C 语言中,栈上的局部变量会在函数执行结束后被销毁,因此不能直接返回其地址。

lufrednow_的博客 1025

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言——函数指针和函数指针数组

函数指针是指向函数的指针变量,它可以用来存储和调用函数的地址。回调函数:函数指针可以作为参数传递给其他函数,使得被调用的函数能够在特定条件或事件发生时,调用传入的函数指针进行回调操作。这样可以实现函数之间的灵活交互和扩展,常见于事件处理、消息传递等场景。函数指针数组:可以使用函数指针数组来实现多态性或动态分派。通过在数组中存储不同的函数指针,并根据需要调用其中的函数,可以在运行时决定调用哪个函数,从而实现动态切换功能。函数指针作为返回值。

qq_51504544的博客 942

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C语言进阶:指针进阶(数组参数和指针参数、函数指针和函数指针数组)

C语言进阶,介绍数组参数和指针参数、函数指针和函数指针数组的内容

2501_91709575的博客 3250

C语言中指针函数和函数指针

函数指针数组的主要用途是存储并后续调用一组函数。实质是一个函数,只不过是返回值是指针的函数,也就是返回的是地址;:函数指针本质是一个指针,只不过该指针的地址指向的是一个函数;指针函数的*是属于数据类型;而函数指针的*修饰的是函数名;函数指针:例:int(*p)(int a,int b);指针函数:例:int *p(int a,int b);函数指针可以作为数组中的元素,也可作为结构体中的成员。指针函数本质是一个函数,其返回值为指针。函数指针本质是一个指针,其指向一个函数。区别:数组元素的参数形式须一致,

weixin_48479422的博客 1015

C语言-函数指针和指针函数的用法和区别

1. 简介 本文主要介绍指针函数和函数指针的定义和区别。 2 指针函数 2.1 定义 指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。 声明格式为:*类型标识符 函数名(参数表) 看看下面这个函数声明: int f(int x,int y); 以上是一个函数,返回值是 int 类型。 接着看下面这个函数声明: int *f(int x,int y); 这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类

Cuienjie的博客 1683

C语言中函数指针和指针函数

C语言中函数指针和指针函数

qq_51531931的博客 1774

C和C++的函数指针语法

1  定义一个函数指针且不论语法,有两种不同形式的指针函数: 一个是指向普通的C函数的指针和C++的静态成员函数,另外一个是指向C++的非静态成员函数的指针。这两者的基本区别是所有指向非静态成员函数的指针都需要这个隐含定义:指向本类的一个This指针。注意:这两种函数指针彼此不兼容。既然一个函数指针实际上和一个变量没有什么区别,定义它的时候也就没有什么特殊。下面的例子中我们定义3个

okhere的专栏 1676

【深入理解C语言中的函数指针和指针函数】

【深入理解C语言中的函数指针和指针函数】

Sugar_wolf的博客 3682
上一篇: C语言之volatile、static、const、extern
下一篇: C之二级指针
ldxFashion
博客等级 码龄6年 0粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值