[C语言]指针数组和指针数组|函数指针和指针函数

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

在c语言中最令然头疼的莫过于指针

特别是指针和数组符号一起出现的

傻傻搞不清楚的原因主要在于运算符的优先级没有搞清

指针的运算符*,数组运算符[],函数运算符();

[]数组元算符 运算优先级和函数运算符()或者说强制改变运算顺序符号()都是位于第一优先级的

而我们的指针运算符则是第二优先级



所以当出现

int *a[];

 []比*优先和名称结合,这个时候先结合就代表其属性 肯定是一个数组 数组里面存放着什么?

然后继续结合 *指针  所以就指针数组 最后结合int 指针指向int类型

int *a();

同理可以得到

()和a先结合得到 函数,然后结合* 函数返回指针,最后结合int得到 函数返回指针,指针指向int类型


当我们使用()来改变运算符的结合顺序的时候

比如

int (*a)();
*先和名称结合 得到指针,然后结合()得到函数,所以是指针指向一个函数,然后结合int ,

我们就可以得到 一个函数指针 返回int类型。


最后我们来检验一个比较糟糕的东西

能写出这种东西的人 就应该被人道毁灭

除了考试能用到 我不相信有人在实际开发的时候自己也会用这一坨屎

char ( *( *x[3]) () ) [5]
是在是太糟糕了 不过继续我们的分析

x[3]:数组

*x[3]:指针数组

(*x[3])():指针数组,指针指向函数

*(*x[3])():函数返回的是指针

(*(*x[3])())[5]:函数返回的指针是指向数组的指针

最后结合char:函数返回的指针指向的数组,数组中的元素是char型的

综上,x是一个指针数组,它里边元素是指向返回值为char [5],无参数的函数






【C语言】指针 函数指针变量调用 函数指针数组 只读指针变量和只读变量指针 特殊指针 指针 函数指针变量调用 函数指针数组 只读指针变量和只读变量指针 特殊指针 阅读详情

相关推荐

c语言:我眼中的指针(教你彻底认识指针)

c语言:我眼中的指针(教你彻底认识指针) 我眼中的指针 c语言:我眼中的指针(教你彻底认识指针)

彻底攻克C语言指针

前面我们讲解了指针数组、二维数组指针、函数指针等几种较为复杂的指针,它们的定义形式分别是: int*p1[6];//指针数组 int*(p2[6]);//指针数组,和上面的形式等价 int(*p3)[6];//二维数组指针 int(*p4)(int,int);//函数指针 我相信大部分初学者对上面几种形式的指针都非常迷惑,不知道该从...

387

凌欧通用FOC框架解析(5.程序环流程)

结构体:电流内环.这是一个结构体函数占空比13.

weixin_43756295的博客 2930

一文学会C语言指针,从此再不怕指针

具体结果就是值,明确知道等于多少的就是值。 存储这些值的地方,就是变量,就是在程序中用来指代某片存储空间的名称,值就是存储空间里面的具体内容。 #include<stdio.h> int main(){ int a; scanf("%d",&a); int *p=&a; return 0; } 输入流中,输入的是a的地址,a地址的类型是就是一个指针。 为啥叫指针,因为指针变量定义完之后,里面存的是另外一个变量的地址 指针变量是指向另外一个变量的 指针声明: 类型后加*

凯凯王的技术生涯 512

在AVP28335(兼容德州仪器TMS320-28335) 上实现ModbusSlaveRTU-485源码及注释。

今天先把题目先给出来, 在近两天会把源码 (含详细注释 )及部署、测试结果给出来, 希望能给大家帮助。(全免费 我有点缺德,断了别人的一个财路)。

FOOLCODE的专栏 641

SpringBoot 指标监控——Actuator

1、 访问:localhost:8000/actuator 设置健康监控显示具体情况 metrics http://localhost:8000/actuator/metrics/jvm.gc.live.data.size 定制化health信息 //利用构造器,在注册中心中添加cityService.saveCity.count指标 public CityServiceImpl(MeterRegistry meter...

weixin_44302046的博客 4627

C指针学习之理解

当在写C代码时,定义一个变量,就相当于是向内存申请了一段存储空间;操作系统为了管理内存,给这些内存分配了一个编号,这个编号就称为地址。而指针变量,存放的就是变量的地址,因此当修改变量的值时,相当于还是在这个地址中修改内存的值;而当修改指针变量的值时;相当于又新添加了个地址。具体代码如下: # include int main(void) { int * p; //p是变量的名字,

sanjie1993的博客 401

重访时间与覆盖分析的stk操作

1.打开stk 2.创建一个新的场景,命名为Test,选择地球为场景星球,若为金星,可在Central Body里选择Venus(金星自转周期慢,自转周期243天,卫星轨道变化不明显)(其中start stop时间可设置长一些) 3.插入一个AreaTarget或者place,以AreaTarget为例 选择Pattern,Add三个点(用法可见前面的博客,有时候编程的代码也可以帮助理解stk的操作) 4.插入Satellite,选择Orbit Wizard(若想设置卫星的六根数也可

weixin_42664107的博客 1万+

C语言指针

内存区的每一个字节有一个编号,这就是地址。在C语言中,访问元素有直接访问和间接访问两种方式直接访问如a=5;    系统在编译时,已经对变量分配了地址,例如,若变量a分配的地址是2000,则该语句的作用就是把常数5保存到地址为2000的单元间接访问如:scanf("%d",&amp;a)   调用函数时,把变量a的地址传递给函数scanf,函数首先把地址保存到一个单元中,然后把从键盘接收到的数据通...

凯凯王的技术生涯 477

Redhawk:如何gds2def?

使用redhawk gds2def功能 这其中gds_layer.map的书写方式如下: m代表metal,v代表via。 ICC/ICC2用户可以从tech file中获取layer number。 innovus用户可以从stream out layer map中获取layer number。 最后运行gds2def -m gds2def.config即可。 ...

m0_61544122的博客 5340

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

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

2501_91709575的博客 3250

《Python星球日记》 第72天:问答系统与信息检索

《Python星球日记》 第72天:问答系统与信息检索,在前面的日子里,我们学习了自然语言处理的基础知识,包括文本预处理、词向量、Transformer架构和各种预训练模型。今天,我们将探索问答系统这一NLP的重要应用,以及如何结合信息检索技术构建智能问答系统。

Code_流苏:在代码中寻诗意,在实践中觅真知 1073

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

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

qq_51504544的博客 942

【车载以太网】【AVB/TSN】IEEE802.1Qav队列及转发协议

目录 一、概述 二、优先级排队算法 三、基于信用的流量整形算法 一、概述 IEEE 802.1Qav 队列及转发协议(Qav)针对不同数据流选择不同的传输选择算法来保障对时间敏感的 AV 数据流的实时传输。为了避免传统的异步以太网数据流量与 AVB 流量之间对网络资源的竞争,AVB 交换机内使用优先级排队算法和基于信用的流量整形算法实现数据流的调度。 二、优先级排队算法 优先级排队算法主要用于传统以太网数据流(BE, Best Effort)的调度传输,BE 流通过基于优先级...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4687

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C语言--函数指针变量和函数指针数组的区别(详解)

函数指针是指向函数的指针变量。它可以用来存储函数的地址,从而可以通过指针调用函数。返回类型 (*指针变量名)(参数列表);其中,返回值类型是函数的返回值类型,指针变量名是函数指针的名称,参数列表是函数的参数类型和个数。例如,我们有一个函数 add,它接受两个整数参数并返回它们的和。我们可以声明一个函数指针 p 来指向该函数:// 声明一个函数指针变量pp = add;// 将函数add的地址赋值给p// 通过函数指针调用add函数。

Jason_from_China的博客 1255

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C语言-指针高级(二级指针和多级指针、数组指针、指针数组、函数指针);

本章详细讲解:C语言二级指针和多级指针、数组指针、指针数组、函数指针、函数指针数组;

李永奉的博客 1467

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言所有函数指针变量,C语言函数指针变量和指针函数以及指针数组

C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。函数指针变量定义的一般形式为:类型说明符 (*指针变量名)();其中“类型说明符”表示被指函数的返回值的类型。“(* 指针变量名)”表示“*...

weixin_32667439的博客 422

【C语言进阶】指针和数组(指针与数组名;指针数组,数组指针;数组传参,指针传参;字符指针,函数指针,函数指针数组,回调函数)

【初级C语言】指针和数组(指针与数组名;指针数组,数组指针;数组传参,指针传参;字符指针,函数指针,函数指针数组,回调函数)

52Herzt的博客 1491

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

函数名和函数名本质上都是函数的地址。

zwznzje的博客 461

浅谈C语言数组指针和函数指针

记录C语言小白的学习历程 数组指针 函数指针

2402_86037826的博客 1064

C语言---指针数组和数组指针,函数指针

/指针数组int *arr[5] //函数指针int (*p)(int,int) = add;printf("请选择你要进行什么计算(1:加、2:减、3:乘、4.除):");//(arr[choice-1])将数组内用户选择的算法函数指针传递给p。int (*p)[5] 这个声明定义了一个指针 ,指向一个包含5个整数的数组。printf("请输入你要进行计算的两个整数(之间用/分隔):");//int (*p)(int,int)定义一个函数指针。例:int (*p)(int,int) = add;

2301_80464770的博客 600

深入解析C语言动态内存分配与函数指针和二级指针和指针数组

(3)释放后指针变为野指针:内存被释放后,原指针仍指向该地址,继续使用该指针会导致错误,因此释放后将指针置为 NULL。注意事项:(1)分配的内存未初始化,内存中是随机值。初始化内存:calloc 会将分配的内存全部初始化为 0,而 malloc 分配的内存是未初始化的(存储随机值)。函数指针是指向函数的指针变量,它存储的是函数在内存中的起始地址,通过函数指针可以间接调用对应的函数。数组名表示数组的首地址,其类型为“指向指针的指针”(如int *arr[5]中,arr的类型是int **)。

2301_80981525的博客 1112

C语言进阶(指针2.函数指针和指针函数,二级指针,指针数组和数组指针,void*指针)

本文介绍了C语言中指针的高级应用,主要包括指针函数与函数指针、二级指针、指针数组与数组指针以及void指针四部分内容。指针函数是返回指针的函数,需避免返回局部变量地址;函数指针指向函数,可实现回调功能。二级指针用于修改外部指针变量或处理指针数组。指针数组是元素为指针的数组,适合处理字符串;数组指针指向整个数组。void指针可存储任意类型地址,常用于通用参数传递。文中通过字符串处理、排序算法等示例代码详细演示了各类指针的使用方法。

2401_89312016的博客 935

从0开始学c语言-28-qsort函数、 数组和指针参数、函数指针数组(转移表)、回调函数

cmp_age函数的返回类型和函数参数类型都没变化,和我们上面写的不太一样的地方是,访问两个元素的方式不太一样了,因为我们是结构体元素的比较,便需要转换为结构体指针来访问结构体成员并且比较。

qq_61558455的博客 855

【C语言】常量指针和指针常量,指针数组和数组指针,指针函数和函数指针怎么区分?

指向一个完整数组的指针,虽然p_arr1存放的是数组的首地址,但是范围是全部数组的范围,p_arr1+1内存地址加12个字节。:指向函数的指针,函数的名称本身也是函数指针。:无法通过该指针修改指向地址中的内容。:数组内是指针类型的数据。:指针指向的地址不可变。:返回值为指针的函数。

qq_67233808的博客 751
上一篇: 打酱油两个月
下一篇: [unix]sysconf、pathconf和fpathconf
HeapStackk
博客等级 码龄12年 11粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值