美文网首页
C语言-数据类型

C语言-数据类型

作者: 小李不木 | 来源:发表于2019-06-10 12:54 被阅读0次

   C语言中数据类型是什么重要的,他们是定义变量的基础。C语言中数据类型大体上可以分为:基本数据类型,构造类型,指针类型,还有枚举。今天我把自己这几天所学的在这里总结一下。

      1:基本数据类型

       1>: int 类型,可以表示所有的自然数。在不同的编译器中它在内存中占据的字节数也是不一样的,一般占据4个字节。                  在printf 中输出时以%d 作为格式符。它又分为好几中小的类别.  

            short  和 long 可以改变数据的长度,即数据所占的内存的字节数: 当用  short 和long修饰 int  时: 

     1: short  int 也可以写为  short 两者是完全等价的。 short int 在内存中占据了两个字节。在printf 中输出时也以%d 作为格              式符。

     2:long int 是长整型,也可以写作  long 在内存中占据8个字节。输出时以% ld ,作为格式符。

     3: long  long  int 等价于 long   long  ,内存中也是占据8个字节。输出时以 % lld 为格式符。

     4:unsigned  和  signed  只能改变最高位代表的意义: 

     5: signed   代表数据有符号,最高位作为符号位。可表示正整数,0,负数。signed  int 等于 signed  又等于 int, 因为系             统内部int 时默认为有符号的,所以singned  写跟没写没啥区别。在printf 中输出时以%d 作为格式符。由于它的最高位作              为符号位因此它的取值范围为  - 2的31次方-1  到正的 2的 31次方 -1 。

6:unsigned  代表数据没有符号,最高位不当作符号位用,因此它正整数和0..取值范围比signed的大,取值范围为: 2的              32次方-1  。unsigned  int  等于 unsigned ,在printf 中输出时以   %u 作为格式符。

 2>:char 类型

         char 类型在内存中只占据一个字节的存储空间。在printf 中输出时以  %c 作为格式符。一次只能输出一个字符。也可以      用 %d  作为格式符输出一个字符常量,因为char 的好多字符在内存中存储都是以它们相对应的ASCII码值转化为二进制来存    储的,所以也可以以整型输出。

 3>:float  和 double 类型

       1: float 代表小数,在内存中占据4个字节,在printf 中输出时以%f 作为格式符。输出时默认为输出6位小数。

       2:double 也是代表小数,在内存中占据8个字节,在printf 中输出时也以%d 作为格式符,也默认为输出6位小数。

         %.2f   代表输出时 小数点后输出两位小数。

  4>:构造类型

      1:数组:用来存储一组有顺序的数据。

         只能存放一种类型的数据,里面存放的数据成为元素。

 格式:  元素类型   数组名[  元素个数 ];

          元素的下标从0 开始,直到元素总数  -1。

    例如:定义一个数组,并初始化

               int  arry [ 5 ]:

             arry [5 ] = {1,2,3,4,5,};

        也可以   int  arry [ 5 ]  = {1,2,3,4,5,};

  选择性赋值:int  a [5 ]  =  {  1,2}  ;

                   //   只给数组前两个元素a [0],  a[1]   赋值。

或者  int  a [5] =  {  [3]=4,[4] =  5 }; 

              //   指定把 4的值赋给 a [3],  5 赋 给 a [4]。

         int  a  [  ]  = {    1,2,3  }    ;

       //  可以省略元素个数;系统默认为有3个元素.

  还可以   :int  b [ 'a' ] ={ 1,2,3,4,5,6 } ; 

               这样写是正确的,因为'a ' 得 ASCII 码是97,可以作为字符常量来用。

如果在定义数组的同时进行初始化,数组元素个数必须是常量,或者不写,或者常量表达式。

例如:int  a [  count ] ={1,2,3,4 };   是错误的写法。

  数组元素个数为变量时,不能同时对数组进行初始化。

 计算数组元素个数: 例如  int  a [n];

                    可以用:  n=  sizeof(a )/ sizeof( int );

           // 因为int 型数据在内存中占据4个字节。

 二维数组 :  元素类型   数组名  [  ]  [  ] ;

      例如:  int   a  [  2 ]   [ 3  ]  ;

     二维数组是特殊的一维数组,它的元素为一维数组,相当于  2 行 一维数组。 每个一维数组中有三个元素。

  初始化时    int  a  [   ]  [ 3 ] = { {1}, {2}, {3} } ;

                    // 第一个元素数可以省略  ,但是第二个必须要有。

2:结构体

可以分为两步,一先定义结构体类型,二再根据结构体类型定义结构体变量。

例如:先定义一个结构体变量   struct   DATE 

              struct   DATE  

             {      int   year;

                    int   month ;

                   int  day ;    };

           在根据类型定义变量:

         struct   DATE   a =  { 2015,   4,   21};

          struct   DATE  b ;

或者同时定义变量:

             struct   DATE  

             {      int   year;

                    int   month ;

                   int  day ;    } a  ;

  或者 这样赋值: a.day = 21;

       或者  struct  DATE a = { .year=2015,  .month = 4 , };

                   b=a ;   //  将 a 的所有成员的值对应赋值给b 的多有成员。这句执行之后就相当于:

          struct   DATE  b = { 2015, 4,21};

   结构体和数组都可以存放一组数据,可是结构体可以由多个不同类型的数据构成。需要注意的是,定义结构体类型时系统不会分配存储空间,只有在定义结构体变量时才会分配存储空间。且结构体所占用的存储的空间必须是 最大成员字节数的整数倍。结构体类型不可重复定义。

   也可以这样定义结构体:

                struct    

             {      int   year;

                    int   month ;

                   int  day ;    }  c ;

 不写结构体类型名,这样的结构体可以重复定义,但是这种结构体不可以重复使用,每次使用都要重新定义一次结构体类      型。 

       由于结构体类型是程序员自定义的,并非系统自带的,所以结构体类型的作用域,从定义类型的那一行开始,一直到代码块结束。

  结构体数组:

例如struct   DATE  

             {      int   year;

                    int   month ;

                   int  day ;    }  ;

   赋值:1:  struct  DATE  d [3]  ={ {   }, {   },  {    } } ;

                2: struct  DATE  d  [  3 ];

                       d [ 0 ].year = 2015;

  错误写法: d [ 0 ] = { 2015, 4, 21};     //  d [ 0] 是一个数组,里面有三个元素,d[0 ] 代表数组的地址,也就是数组首元素的地址。

3:结构体的嵌套    

struct   DATE  

             {      int   year;

                    int   month ;

                   int  day ;    }   ;

struct   student 

             {      int   num;

struct   DATE  birthday   ;

struct   DATE  ruxueriqi  ;    }   ;

  struct   student      e = {  1,{    },  {     }  }; 

注意:结构体只能嵌套别的结构体类型,不能自己嵌套自己。

4>:枚举类型

在枚举类型中,变量只允许有几个固定的取值。

定义枚举:  enum  枚举类型名

                      {          值1,

                                 值2 , 

                              ......  ,    } ;

这些值也都只能是整型常量,往后依次递增。

 定义枚举变量:

          enum    类型名  变量名  = 值;

         // 这个值只能从上述的枚举值中取。

例如: enum  season

             {  spring,

                summer,

               autumn,

               winter,

                         };

            enum  season  a  = spring ; 

并且枚举中的值都是整型常量。

相关文章

网友评论

      本文标题:C语言-数据类型

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