C语言数据类型总结

------期待与您交流! -------


一、C语言数据类型

        

二、变量类型

   1. 根据变量的作用域,变量可分为局部变量和全局变量

   2. 局部变量(函数内部定义的)

   (1)作用域:从定义变量的那一行开始,到代码块结束

   (2)生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收

   (3)没有固定的初始值

   (4)函数的形参也是局部变量

   3. 全局变量(函数外面定义的)

   (1)作用域:从定义变量的那一行开始,一直到文件结束,能被后面的所有函数共享

   (2)生命周期:程序启动就会分配存储空间,程序退出时才会被销毁

   (3)默认的初始值是0

三、构造体(数组,结构体,共用体,枚举)

   1. 结构体(struct)

   (1)结构体是一种数据类型,它属于构造体

   (2)它可以由不同类型的数据构成,而数组只能存放同一种类型的数据

   (3)定义:  结构体类型(自定义)  结构体变量名(根据结构体类型定义)

                        struct    person             //结构体类型(自定义)(并不会分配存储空间)

                      {

                           int age;             //年龄

                           double height ;    //身高

                           char * name ;     //姓名

                      };

                         struct  person p={20,1.67,"jack"};    //p是结构体变量名(根据结构体类型定义)(真正开始分配存储空间)

               { }里面的三个变量称为结构体的属性或成员  (而且三个成员按顺序存储)

   (4)p.age=20    (点语法)   //利用点语法可以访问或者修改结构体的内部属性

   (5)只能在定义结构体变量的同时给它赋值

           struct  person p

           struct  person p={20,1.67,"jack"};    //这种写法是错误的

   (6)p共占 4+8+8=20(补4)=24字节       (补齐算法:结构体所占存储空间必须是最大成员字节数的倍数)

   (7)其它定义方式

            1)             struct    person                  //定义结构体类型

                      {

                           int age;             //年龄

                          double height ;    //身高

                           char * name ;     //姓名 

                      } p;                                           //利用新定义好的类型定义结构体变量

                  可以利用定义好的结构体类型,定义其它结构体变量    struct    person p2

           2)struct   {               //省略了类型名称

                            int age;             //年龄

                           double height ;    //身高

                           char * name ;     //姓名 

                           } p;     

   (8)结构体类型不可以重复定义

   (9)结构体类型的作用域:从定义类型的那一行开始直到代码块结束

         1)定义在函数外面:全局有效

         2)定义在函数(代码块)内部:局部有效

  (10)结构体数组

          struct    person                 

              {

                   int age;             //年龄

                  double height ;    //身高

                  char * name ;     //姓名 

              } p;                         

          struct    person [3]=

               {

                   {20,1.67,"jack"};

                   {23,1.66,"jone"};

                   {25,1.63,"rose"};

               }

              如果要修改rose的年龄,不能用  person [2]= {88,1.63,"rose"};  只能用person [2].age=88

   (11)指向结构体的指针

                struct    student                 

                      {

                           int age;             //年龄

                           int no;               //学号  

                      } stu;  

                struct    student stu={1,20};

                struct   student  *p;      //指针变量p指向 student类型的数据

               p=&stu;     //指针变量p指向了stu变量

              *p.age      p->age   stu.age    都可以访问age的值      修改age的值用p->age=30

   (12)嵌套定义

             int main()

            {

                 struct Date

               {

                   int year;                  //年

                   int month;               //月

                   int dat;                    //日

               };

                  struct  student 

               {

                    int no;             //学号

                    struct Date birthday;         //生日

                    struct Date ruxuedate;      //入学日期

               };

                 struct student stu={1,{2001,9,10},{2010,3,4}};

                  return 0;

             }

   2. 枚举(enum)

   (1)定义方式  (先定义枚举类型,再定义枚举变量)

       enum season          //定义枚举类型

     {

         spring;

         summer;

         autum;

         winter;

     }

        enum season s=summer;      //s为定义的枚举变量

   (2)使用场合:当一个变量的取值只允许有几个固定取值时

  



      

    

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值