美文网首页
c的复杂声明和typedef

c的复杂声明和typedef

作者: 梦落迹南天 | 来源:发表于2018-12-02 22:57 被阅读0次

这几个东西,总是个总结了又忘,又搞混淆了,还是写下来好回顾

C语言中声明的优先级规则

C专家编程中提到C语言中声明的优先级规则如下
优先级从高到低分别是
1.括号括起来的部分
2.后缀操作符,括号()表示这是一个函数,而中括号 [ ]表示这是一个数组

  1. 前缀操作符,星号 * 表示“指向..的指针"
    4.如果const 或 volatile关键字的后面紧跟类型说明符(比如int, long等),那么它作用于类型说明符。在其他的情况下,const和volatile关键字作用于它左边紧邻的指针星号
    5.右结合

书中的几个例子:
char * const * ( *next ) ( );
next是一个指针,指向一个返回类型为char * const * 的函数,该类型是一个

指向于
    只读(const)的
    指向于char类型
    的指针
的指针

char ( c[10])(int *p)
c是一个数组,该数组的类型是指向于类型为 char
(int *p)的函数,该函数返回值为char ,参数类型为int **

void ( * signal( int sig, void( * func )( int ) ) ) (int );
signal是一个函数,该函数有两个参数 sig 和func,func是是一个指针,指向于void (int)的函数,signal是一个函数,该函数的是一个志向与 void (int)类型函数的指针

typedef

typedef 作用是创建一个新的类型关键字,如下
typedef void(* ptr_to_func) (int);
当使用这个ptr_to_func关键字进行声明的时候,声明的东西直接代入即可,譬如
ptr_to_func func 其实等价于 void ( *func )( int )
以及
ptr_to_func signal(int ,ptr_to_func) 等价于 void ( * signal( int sig, void( * func )( int ) ) ) (int );

函数指针、指针函数、常量指针、指针常量

中文上的识别方式,统一看最后两个字,最后两个字确定这是什么东西
函数指针:这是一个指针,指向于函数
指针函数: : 这是一个函数,返回值为指针
常量指针: 这是一个指针,指向于常量
指针常量 : 这是一个常量,常量修饰的是指针

相关文章

  • c的复杂声明和typedef

    这几个东西,总是个总结了又忘,又搞混淆了,还是写下来好回顾 C语言中声明的优先级规则 C专家编程中提到C语言中声明...

  • 2018-08-24

    1. C++ typedef 原声明:int (a[5])(int, char);使用typedef:typede...

  • ios block详解

    什么是typedef? typedef就是一种替换,与宏不同的是它还可以进行对象的声明。 typedef为C语言的...

  • 代码布局排版

    @class类声明 结构体定义 枚举 C函数定义 字符串常量声明 typedef重命名 协议

  • 14. 额外的一章 Additional Capabilitie

    14.1 新增的特征 typedef 声明语句(常用) typedef语句,允许构造一个现有的C数据类型名称的供替...

  • iOS block=写法总结(如block的参数是一个block

    一、block作为属性声明 1、typedef声明block名称 typedef id(^Block_Name)(...

  • 结构:类型定义

    自定义数据类型(typedef) C语言提供了一个叫typedef的功能来声明一个已有的数据类型的新名字。比如:​...

  • OC中的block回顾

    1.block声明 2.block的typedef 2.1 typedef的使用 2.2 声明block类型的使用...

  • C/C++关键字介绍

    一、 typedef typedef为C/C++的关键字,与auto、extern、mutable、static、...

  • 【转】struct和typedef struct在C/C++中的

    分三块来讲述:1 首先://注意在C和C++里不同在C中定义一个结构体类型要用typedef:typedef st...

网友评论

      本文标题:c的复杂声明和typedef

      本文链接:https://www.haomeiwen.com/subject/rkgscqtx.html