zoukankan      html  css  js  c++  java
  • 重拾C之数据

    C中只有四种数据类型,整型,浮点型,指针和聚合类型

    一。整型

      字符,短整型,长整形,整型

      标准中并没有规定长整形要比短整型长,规定:长整形至少应该和整型一样长,而整型至少应该和短整型一样长

      short int 至少16位,long int 至少32位,缺省的Int的位数多以机器的环境字长来决定。char型变量的值最好限制在unsigned char和signed char的交集里,考虑到兼容性问题,char最好不要参与算术运算

      整型字面值:用const声明的变量,当一个程序中出现整型字面值的时候,它属于那种类型有字面值最后的字符决定,L为long型,u为unsigned型,另外字符常量的类型总是Int,你不能在后面添加别的后缀

      枚举类型

      枚举类型就是指他的值为符号常量而不是字面值的类型;例如 enum Jar_Type {CUP,PINT,QUART,HALF_GALLON,GALLON}

      这条语句声明了一个类型,称为Jar_Type,这种类型的变量按如下方式声明

      enum Jar_Type millk_type,gass_can,medicine_bottle;

      这些类型的变量其实是以整型的方式存储,这些符号名的实际值都是整型,你可以为这些符号名制定特定的整型值

      enum Jar_Type{CUP=8,PINT=16,QUART=32,HALF_GALLON=64,GALLON=128};

      不要把整型和枚举值混在一起使用

    二。浮点型

      float double long double组成,他们的长度规定和Int,short int ,long int 相近

    三。指针

      C中不存在指针常量,如果你需要修改字符串,请把它存储与数组中      你可以把字符串常量赋值给一个“指向字符的指针”,但是不能把一个字符串常量赋值给一个字符数组,因为字符串常量的直接值是一个指针,而不是这些字符本身

      声明指针:int *b,*c,*d;是声明三个指针的正确方式

    四。typedef

      typedef声明的写法和普通的声明基本相同,只是把typedef这个关键词出现在声明前面

      char *ptr_to_char;  改为 typedef char *ptr_to_char;   ptr_to_char a; 声明a是一个 指向字符的指针

      应该 用typedef而不是#define 来创建新的类型

    五。常量

      用const关键字来声明常量,他们的值不能修改

      如何初始化1。 在声明的时候对他进行初始化 int const a=150; 2.在函数中声明为const的形参在函数被调用时会得到实参的值

      当涉及到指针变量时,情况变得有趣。

      Int *pi;

      int const *pci; 是一个指向整型常量的指针,你可以修改指针的值,但是你不能修改它所指向的值

      int * const cpci;是一个指向整型的常量指针,指针是常量,它的值无法修改,但是你可以修改它所指向的整型的值

      #define指令时另一种创建名字常量的机制 只要允许使用字符值常量的地方都可以用,比如声明数组的长度,而const只能用于允许使用变量的地方

    六。作用域

      1.代码块作用域(位于一对花括号之间的所有的语句称为一个代码块)

      2.文件作用域

      任何在所有代码块之外声明的标识符都具有文件作用域,从声明处开始到它所在源文件的结尾处都可以访问,在文件中定义的函数名也具有文件作用域

      3.原形作用域

      只适用于在函数原型中声明的参数名,,在原型中(也就是声明的时候),参数的名称并非必需,可以随便起 ,不必跟定义的时候的形参名保持一致

    七。链接

      三种:external,internal,none

      代码块外的和函数默认的属性是external,而代码块内部的默认为时None型的

     None总是被当做单独的个体,也就是说该标识符的多个声明被当做独立不同的实体, internal的标识符在同一个源文件内的所有声明中都指向同一个实体,external的标识符不论声明多少次,位于几个源文件中都表示同一个实体

      static关键字可以将external链接属性的改为Internal属性的,而且只对缺省链接属性为external的声明才起作用  

      extern关键字,如果为一个标识符知道指定external链接属性,则,可以访问在其他位置定义的这个实体

    八。。存储类型

      有三个地方可以用于存储变量:普通内存,运行时堆栈,硬件寄存器

      auto,static,register

      尽量不要用register,因为编译器不一定会理睬,在有些计算机中,可以将使用频率最高的那些变量声明为寄存器变量,可以提高程序效率

      在代码块内部声明的变量的缺省类型时auto ,也就时说它存储在堆栈中,在代码块之外声明的变量的缺省存储类型为static类型的,这类静态变量在程序运行之前创建,在程序的整个执行期间始终存在,始终保持原型的值,除非给他赋一个不同的值,或者是程序结束

      函数的形参不能声明为静态的,因为实参总是在堆栈中传递给函数,用于支持递归,在代码块内部声明的变量,如果给他加上static关键字,就变成了静态局部变量了

    初始化:静态变量,系统会自动给其赋值,而动态的不会,如果不给他显式的初始化,他们的值总是垃圾

      

  • 相关阅读:
    redis命令
    linux命令行任务管理
    tomcat修改内存
    Python调用shell
    取消myeclipse自动进入workspace
    解决Myeclipse编译不生成.class文件问题
    Manacher回文串算法学习记录
    青少年如何使用 Python 开始游戏开发
    对 Linux 专家非常有用的 20 个命令
    对中级 Linux 用户非常有用的 20 个命令
  • 原文地址:https://www.cnblogs.com/lingxianxia/p/4320196.html
Copyright © 2011-2022 走看看