c语言之左右法则

C语言后记-24 C语言复杂指针阅读方法 - 右左法则 简化的方法就是typedef,这个是使用的非常广的,可以简化指针和数组的定义。3.遇到圆括号或方括号时可以确定部分类型,并调转方向。1.从最里边的圆括号中未定义的标识符看起。不过我还是用比较容易理解的方式记录一下。但是在简化之前应该先读懂这个代码!4.重复2 3 步骤,直到阅读结束。2.首先往右看,在往左看。可以看下我之前的文章。 阅读详情

C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。

什么是左右法则呢?下面我会通过定义与一些例子尽量给大家讲解一下,希望对大家有所帮助。

右左法则:首先从最里面的圆括号内未定义的标识符开始阅读看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。


在通过复杂例子解析左右结构之前,我先说一下指针数组嵌套中的一些基本类型

1

1.int a;  整形变量

2.int *a; 整形指针变量 

3.int **a; 整形指针的指针变量(一个指向指针的指针,它指向的指针指向一个整形数)

4.int a[10];  整形数组

5.int  *a[10]; 整形指针数组(一个数组中有10个指针,该指针指向一个整形数)

6.int (*a)[10]; 整形数组指针(一个指向有10个整形数组的指针)

7.int (*a)(int); 函数指针变量(一个指向函数的指针,该函数有一个整形参数并返回一个整形数)

8.int (*a[10])(int); 函数指针数组(一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整形数)


介绍完一些基本类型,下面来介绍一些复杂的例子


1.int *( * ( *fpl ) ( int ) ) [10];

--*fpl   知道fpl是一个指针

--*(*fpl)(int)  知道指针fpl指向一个形参为int,返回值为指针的函数

--int *(*(*fpl)(int))[10]  知道该函数的指针指向一个数组,该数组有10个元素,并且每个元素指向一个整数

总结:fpl被声明为一个函数的指针,该函数返回值是一个指向指针数组的指针


2.int * ( * ( * arr [5] ) ( ) ) ( );

--*arr [5]  知道arr是指针数组,数组arr里有5个指针,每个元素里存放着某某的地址

--*( * arr [5] )( )  知道函数指针数组,一个有5 个指针的数组,该指针指向一个形参为空,返回值为某某的函数

--int * ( *( * arr [5] )( ) ) ( )接上面,知道该函数返回一个指向函数指针的指针

总结:函数指针数组,arr[5]中的元素被声明为一个函数的指针,该函数的返回值是一个指向函数指针的指针


下面几个例子我在这边就不在具体分析了

3.float ( * ( * e [10] ( int  * ) )  [5] );

总结:函数指针数组,e[10]中的元素被声明为一个函数的指针,函数的返回值是一个指向浮点型数组的指针


4.void * ( * ) ( char , int ( * )( ) );

总结:函数指针变量,指针指向一个形参为char和int(*)的函数,函数的返回值是一个函数指针,该函数形参为空返回值为空


例子就解释到这里,只要多解释多练习问题就不大,希望对大家有所帮助。





C语言右左法则----复杂指针解析 因为C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢? 立即下载

相关推荐

深入学习C语言中的函数指针和左右法则

主要介绍了深入学习C语言中的函数指针和左右法则,左右法则是一种常用的C指针声明,需要的朋友可以参考下

左右法则过程简单分析C语言指针

左右法则过程简单分析

an_tang的博客 614

2025华东杯A/B/C题解题思路+可运行代码参考

这些因素包括但不限于:助滑坡的坡度、运动员的质量、滑雪板的接触面与雪地的摩擦力、空气阻力系数、运动员的体型和衣物形态等。助滑坡是运动员滑行至起跳台前的最后一段坡道,这一段坡道的坡度、长度和运动员的姿势会直接影响到起跳时的初始速度。运动员的滑行速度不仅受助滑坡的坡度影响,还受到摩擦力、空气阻力和重力等多方面因素的影响。通过合理的姿势调整,运动员能够有效减少空气阻力,增加身体的重力加速度,进而提升滑行速度。助滑坡的角度通常介于10°到12°之间,而运动员的滑行速度将受到重力、摩擦力和空气阻力的共同作用。

qq_52590045的博客 1797

再谈C语言的学习(九)──程序设计中的几个法则

    最基本的法则莫过于 Knuth 的《计算机程序设计艺术》(The art of computer programming)所提到的几条特性(Knuth是全球公认的算法高手,TeX排版系统的缔造者,也是名黑客,所以也请记住他):      1.确定性:你写的程序必须有确切的定义,即每种运算应该执行何种运作是必须是清楚的、无二义性的。你不可以让你的程序输入是3+5,而输出则一会儿是8,一会儿是

MDZ' Blog 1418

CentOS Stream 9中安装MySQL的详细步骤

本文详细介绍了在CentOS Stream 9系统中如何进行MySQL的在线安装、离线安装以及忘记密码的恢复操作。通过阅读本文,您将能够了解并掌握在CentOS Stream 9上安装MySQL的步骤,以及在遇到忘记密码的情况下的解决方案。

小白典的博客 7258

OpenSees入门指南:从零开始的环境配置与TCL脚本实战

本文提供了一份详细的OpenSees入门指南,涵盖从零开始的环境配置到TCL脚本实战的全过程。文章重点讲解了OpenSees的安装步骤、环境变量设置,并推荐了高效的VS Code集成开发环境配置方法。通过一个简支梁分析的完整TCL脚本示例,手把手引导读者完成第一个非线性有限元分析,帮助土木工程与结构工程领域的研究者与学生快速上手这一强大的开源分析工具。

weixin_28829339的博客 336

指针(一)C语言指针问题

c语言指针问题例题与具体分析

进击的白嘟 1053

开关电源环路学习笔记(1)-为啥要知道传递函数?

做硬件都会接触到开关电源,或多或少会接触到环路补偿。很多兄弟们也提出来让我说说这个,说明大家也都很关心,也说明这个好像有点难。 就我个人而言,我也想搞明白环路这一块,也查了一些资料,视频,不过说实话,一直都还是懵的,感觉很困难。 具体感觉就是,看资料或视频的时候,感觉好像是那么回事。但是撇开之后,就又云里雾里的感觉,总有一些想法没有找到答案。 问题 比如下面我想过的问题: 开关电源有开关,根本就不是一个线性系统,传递函数是咋弄出来的? 系统环路框图的输入量为什么不是Vin,而是参考电压V

weixin_42005993的博客 1万+

c语言的左右法则

1.左右法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该调转阅读方向。一旦解析完圆括号里的内容,就跳出圆括号。重复这个过程直到整个声明解析完毕。 2.左右法则是用来理解复杂的声明的。 3.左右法则的例子 int *a[10];   a是一个整型指针数组 int(*a)[10];   a是一个数组指针变量 int(*a)(i

qq_27114221的博客 1015

【保姆级教程】教你如何轻松获取MIMIC数据使用权限

文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。

越努力 越幸运 6600

Linux Namespace隔离实战:dd/mkfs/mount/unshare构建终极沙箱

内存占用 | 512MB+ | **<10MB** | 50倍节省 || 启动时间 | 15-45秒 | **0.1-0.5秒** | 100倍加速 || 磁盘空间 | GB级 | **MB级** | 显著减少 || 系统调用性能 | 有损耗 | **原生速度** | 零损耗 |

Loving_enjoy的博客 398

C语言笔记:C语言的左右法则

C语言所有复杂的指针声明,都是由各种声明嵌套构成的。看起来貌似复杂没有章法,其实C语言你可以用左右法则解读复杂指针声明。 The right-left rule: Start reading the declaration fromthe innermost parentheses, go right, and then go left. When you encounterparenthe

Echo_Ana的博客 910

uniapp - 详细手机端h5网页调用手机摄像头进行二维码识别扫描,在uniapp的H5移动端微信网页平台中,在浏览器中调用手机扫码功能详细教程,识别二维码并获取扫描结果(完整示例源码,一键复制即用

uniapp,h5,手机端网页,H5手机网页,uniapp开发h5实现扫码功能,uniapp微信h5网页扫码sdk使用教程,uniapp h5网页如何实现浏览器扫码,uniapp扫码功能怎么兼容h5_uniapph5怎么做扫码功能,uniapp的手机网页如何实现扫二维码一维码,浏览器H5实现js扫码,H5调用摄像头和扫一扫功能,亲测可用,H5调用本地摄像头实现扫一扫,uni-h5项目解决扫码功能,uniapp实现微信H5扫码,解决uniapp在H5端使用不能扫码问题,uni-app的h5扫码(二维码、条形码

✅ 精选推荐文章 1万+

C语言左右法则

func被一个圆括号包含,左边又有一个*,那么func是一个指针,跳出括号,右边是一个[]运算符号,说明func是一个指向数组的指针,现在往左看,左边有一个*号,说明这个数组的元素是指针,再跳出括号,右边又有一个括号,说明这个数组的元素是指向函数的指针。,它的外面有一对圆括号,而且左边是一个*号,这说明func是一个指针,然后跳出这个圆括号,先看右边,也是一个圆括号,这说明(*func)是一个函数,而func是一个指向这类函数的指针,就是一个函数指针,这类函数具有int*类型的形参,返回值类型是int。

Cfx1998的博客 640

在 SAP S/4HANA Private Cloud 中把标准 CDS View 发布为 OData:可操作的四条路径与完整示例

在 ADT 中创建。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 726

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言声明左右法则

C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:  The right-left rule: Start reading

北冥 718

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

c语言左右移运算法则,C语言左右法则的技巧

C语言左右法则的技巧因为C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?以下是小编为大家搜索整理的C语言左右法则的技巧,欢迎大家阅读!更多精彩内容请及时关注我们应届毕业生考试网!右左法则是一个既着名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声...

weixin_39777019的博客 532

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C 语言左右法则

右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。 笔者要对这个法则进行一个小小的修正,应该是从未定义的标识符开始阅读,而不是从括号读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,但未定义的标识符只会有一个。 现在通过一些例子来讨论右左法则的应用,先从最简单的开始,逐步加深: int (*func)(int *p); 首先找到那个未定

Aikenlan的博客 644

C语言一些容易混淆的表达式,使用“左右法则“轻松解析

从高到低为:[] () . -> ++ – * &

qq_36554461的博客 185

C语言const与指针深度解析:从左右法则到工程实践

在C语言编程中,指针是核心概念之一,它提供了直接操作内存地址的能力,是实现高效、灵活程序的关键。然而,指针的灵活性也带来了安全风险,例如意外修改数据或访问非法内存。为了在编译阶段就约束指针的行为,C语言引入了const关键字,它与指针结合形成了“常量指针”和“指针常量”等重要概念。理解这些概念的原理,对于编写健壮、安全的代码至关重要,尤其是在设计函数接口、处理字符串常量和进行内存管理时。通过掌握“左右法则”等分析方法,开发者可以清晰地界定const的约束边界,明确代码意图,防止误操作。本文聚焦于const指

weixin_34280237的博客 426

菜鸟谈左右法则

很多大师都说过这个左右法则,这里有点献丑。写这篇文章也主要是想让大家指出我的错误,提高我自己,同时和大家分享我的收获。首先将“左右法则”的原文搬出来吧:The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you enco

sw01dck的专栏 718
上一篇: GDB调试器
下一篇: 缓存区 及scanf() getchar() gets()的区别
fighting_kangle
博客等级 码龄10年 28粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值