浅显理解之c语言的声明

     在这之前我对c语言的声明理解不多,看到稍长一些的声明就一头雾水,今天把自己对c语言的

声明理解总结如下。

    先让我们来看一下几个例子

1、int  *p[3];

2、int  (*p)[3];

3、char * const * ( *next ) ();

4、char  * (* c[10] ) (int **p);

以上几个例子如果能理解,那么下面的法则就没有必要继续看了,请直接跳到代码段。

理解c语言声明优先级有如下准则:

A 先找标识符

b1声明中括号里面的部分

b2 括号后面括号()表示一个函数,而方括号[ ]表示一个数组

b3 前缀操作符:*表示 "指向...的指针"

C 如果const和volatible关键字的后面紧跟类型说明符(int long),则作用该说明符,其他情况,作用于他左边紧邻的指针星号。

具体见下图摘自 Expert c Programming

按照如此法则得出开篇答案如下:

1、int  *p[3];    Equal to:int  *(p[3])

p是一个int型指针数组;//p是一个数组,它的元素是指向int型的指针。

2、int  (*p)[3];

p是指向int型数组的指针;//p是一个指针,它指向一个数组,数组内有3个int型元素。

3、char * const * ( *next ) ();//注 const只读的。。

next是一个指向函数的指针,该函数返回另一个指针,该指针指向一个只读的指向char型的指针。

4、char  * (* c[10] ) (int **p);

c是一个指数组,该数组元素是一个指向函数的指针,该函数返回一个指向char的指针,且该函数的形参是一个指向int的指针的指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值