zoukankan      html  css  js  c++  java
  • 《C程序设计语言》笔记 (十二) 参考手册4

    声明

    声明用于说明每个标识符的含义
    
    而并不需要为每个标识符预留存储空间
    
    预留存储空间的声明称为定义
    

      

    8.1 存储类说明符

    存储类型说明符
    
    auto
    
    register
    
    static
    
    extern
    
    typedef
    
    说明符auto和register将声明的对象说明为自动存储对象,这些对象仅可用在函数中
    
    这种声明也具有定义的作用,并将预留存储空间
    
    带有register说明符的说明等价于带有auto说明符的声明,所不同的是,register暗示声明的对象将被频繁访问
    
    只有很少的对象被真正存放在寄存器中,并且只有特定类型才可以
    
    但是,如果一个对象声明为register,将不能使用一元运算符&(显式或隐式都不允许)
    
    对声明为register 但实际按照auto类型处理的对象的地址进行计算是非法的
    
    说明符static就声明的对象说明为静态存储类
    
    这种对象可以用在函数内部或函数外部
    
    在函数内部,该说明符将引起存储空间的分配,具有具体的作用
    
    函数内部的extern声明表明,被声明的对象的存储空间定义在其他地方
    
    typedef 说明符并不会为对象预留存储空间
    
    一个声明中最多只能有一个存储类说明符
    
    如果没有知道存储类说明符,则按照下列规则进行:
    
    在函数内部声明的对象被认为是auto类型
    
    在函数内部声明的函数被认为是extern
    
    在函数外部声明的对象与函数将被认为是static类型,且具有外部链接
    

      

    8.2 类型说明符

    类型说明符:
    
    void
    
    char
    
    short
    
    int
    
    long
    
    float
    
    double
    
    signed
    
    unsigned
    
    其中,long和short最多有一个可同时和int一起使用
    
    类型也可以使用限定符:
    
    const
    
    volatile
    
    const对象初始化后不能进行赋值
    
    volatile对象没有雨实现无关的语义
    
    const用于声明可以存放在只读存储器中的对象,并可能提供优化的可能性
    
    volatile用于强制某个实现屏蔽可能的优化。
    
    例如 对于具有内存映像输入输出的机器,指向设备寄存器的指针可以声明为指向volatile的指针,目的是防止编译器通过指针删除明显多余的引用
    

      

    8.3结构和联合说明

    结构是由不同的类型的命名成员序列组成的对象
    
    联合也是对象,在不同时刻,它包含多个不同类型的成员中任意一个成员
    
    结构或联合:
    struct
    
    union
    

      

    8.4枚举

    枚举类型是一种特殊的类型,它的值包含在一个命名的常量集合中
    
    枚举说明符
    
    enum
    

      

    8.5声明符

    8.6声明符的含义

    8.7初始化

    8.8类型名

    8.9typedef

    存储类说明符typedef的声明并不用于声明对象,而是定义类型命名的标识符
    
    typedef long Blockno,*Blockptr;
    typedef struct { double r,theta;} Complex;
    
    Blockno b;
    extern Blockptr bp;
    Complex z,*zp;
    

      

    8.10类型等价

  • 相关阅读:
    Linux系统挂载存储只读改成读写
    Linux kernel调试方法
    Linux设备树文件结构与解析深度分析
    #undef常用法
    Linux驱动中的platform总线分析
    在根文件系统中查看设备树(有助于调试)
    友元及操作符重载
    STM32 FLASH 擦除(以及防止误擦除程序代码)、写入
    C++学习笔记49:栈
    C++学习笔记48:链表的基本操作
  • 原文地址:https://www.cnblogs.com/dafume/p/7828369.html
Copyright © 2011-2022 走看看