博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言:简单而不易懂的声明(一)
阅读量:5839 次
发布时间:2019-06-18

本文共 1024 字,大约阅读时间需要 3 分钟。

hot3.png

    在学习C语言的过程中,我们难免会碰到很多的声明语句,那么今天就来讨论一些C语言语句声明的一些规则,这些规则虽然难懂,但是当你明白它声明的原理之后你就会很快的明白。

    咱们先从简单的入手,比如说 char * next,大家应该都知道next是一个指向char类型的指针,这个应该很好弄懂,因为char是一个字符声明类型,*是一个指针声明类型。那么接下来我们加深难度 char (*c[10]),这个也应该很好理解c[10]是一个数组,那个*c[10]就说明这个数组的元素是指针的类型,指针是指向char类型的,那么总结的说,就是c[10]是一个指向char类型的数组指针。

    那么或者大家应该看出了一些规律,C语言的声明是有一些规律的,有着一些明显的优先级,那么我们总结一下C语言的优先级:

    A    声明从它的名字开始读取,然后按照优先级顺序依次读取。

    B    优先级从高到低依次是:

        B. 1    声明中被括号括起来的那部分

        B. 2    后缀操作符:

                    括号()表示这是一个函数,而方括号[]表示这是一个数组。

        B. 3    前缀操作符:星号*表示“指向......的指针”

    C    如果const和volatile关键字的后面紧跟类型说明符(如int,long等),那么它作用于类型说明符。在其他情况下,const和volatile关键字作用于它左边紧邻的星号。

    好吧,现在规则都介绍完了,那么我们继续深入的探讨一下这些规则是怎么实现的。举个例子:             char * const *(*next)();  首先咱们从规则    

A开始吧,找到变量名“next”,发现它是被括号括起来的,那么由优先级高低    

B. 1 先解决括号里面的内容,解释为指向......的指针,    

B.2考虑括号外面的东西,那么优先级高的明显是右边的函数(),所以得出next是一个指向函数的指针,指向一个返回......的函数,   

 B.3处理前缀的内容“*”,得出指针所指向的内容,

C最后把char *const解释为指向字符的常量指针。好吧,到这里我们对这个长的分析到此结束,那么它的声明,总结起来就是“next是一个指针,它指向一个函数,该函数的返回值为一个指针,该指针指向一个类型为char的常量指针”,这就大功告成了。

    那么可以尝试的用这个方法分析一下这个:char *(* c[10])(int **p);

转载于:https://my.oschina.net/u/811063/blog/122257

你可能感兴趣的文章
javascript call 与 apply
查看>>
hibernate笔记01
查看>>
UNIX环境高级编程——进程管理和通信(总结)
查看>>
Ubuntu Git安装与使用
查看>>
接口测试理论基础
查看>>
C#操作实例总结(一)—— 系统操作
查看>>
python 正则表达式与re模块
查看>>
OFART: OpenFlow-Switch Adaptive Random Testing
查看>>
步步为营 SharePoint 开发学习笔记系列总结(转)
查看>>
表的查询
查看>>
【面试题】
查看>>
IPv6地址的ping、telnet等操作
查看>>
CDH- 测试mr
查看>>
SpringMVC配置及使用
查看>>
css中的层叠性及权重的比较
查看>>
LeetCode--026--删除排序数组中的重复项
查看>>
怎样在UICollectionView中添加Header和footer
查看>>
使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言...
查看>>
FZU 2107 Hua Rong Dao DFS
查看>>
加密与入侵检查
查看>>