C语言-数据类型

   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 ; 

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容