• 数据类型



    数据类型:内存大小的别名

    变量本质:一段连续存储空间的别名,程序中通过变量来申请并命名存储空间,通过变量的名字可以使用存储空间

    typedef:为数据类型取别名:(而不是创造了新的数据类型)

    typedef  unsigned char  BYTE;

    typedef  int  int32;

    typedef  struct students

    {

      int a;

      char b;

      int32 c;

    }stud;

    struct students xiaoming;==>stud xiaoming;

    ——auto,static,register分析:

    c语言中的变量可以带有自己的“属性”,这就要用到属性关键字

    auto即是C语言局部变量的默认属性

    static指明变量的“静态”属性,同时具有“作用域限定符”的含义:

    static修饰的局部变量存储在程序的静态区;static修饰的全局变量作用域只是声明的文件中,static修饰的函数作用域只是声明的文件中。

    //*******test1.c********
    static  int test1_g =100;  //将全局变量声明为static,表示该变量的作用域仅仅局限于当前文件
    
    int test1_g_func()  //定义一个函数返回上述全局变量的值
    {
      return test1_g;
    }
    1 //*******test2.c********
    2 extern  int test1_g_func();  //将另一个文件中的函数在此文件声明 
    3 
    4 int main()
    5 {
    6   printf("%d
    ",test1_g_func()); //通过函数访问另一文件中的static属性的全局变量
    7   return 0;
    8 }

    static修饰的局部变量,在程序静态数据区中分配空间,并且只能被赋值一次,生命周期是全局的,整个程序的执行完之后才撤销空间。

     1 //*******test3.c********
     2 int fun1()
     3 {
     4   static int abc=1;
     5   for(int i=0;i<5;i++)
     6     abc++;
     7   return abc;    
     8 }
     9 int fun2()
    10 {
    11   int abc=1;
    12   for(int i=0;i<5;i++)
    13     abc++;
    14   return abc;    
    15 }
    16 
    17 int main()
    18 {
    19   fun1();
    20   printf("%d
    ",abc); //输出:2  1++;1++;1++;1++;1++;2
    21   fun2();
    22   printf("%d
    ",abc); //输出:6  1++;2++;3++;4++;5++;6
    23   return 0;
    24 }


    register指明向寄存器中申请空间,但不一定成功。register变量的值必须是cpu寄存器可以接受的值,不能“&”取地址,取地址,取的是内存的地址,这里的空间不在内存中,所以也就不能取地址运算。不能将全局变量声明为register属性,全局变量是程序全局静态区中分配空间的。register属性只能修饰局部变量,并且还不一定成功,但是一旦成功,访问速度很快,实时性要求高的程序中,普遍采用。

    内在的趣味,表面的繁琐
  • 相关阅读:
    【中山纪念中学六年级模拟赛】方格翻转 题解
    高斯消元
    net 控件开发资料
    使用自定义验证组件库扩展 Windows 窗体
    POJ 3032
    UVa 10878 Decode the tape
    C语言I博客作业03
    第十周助教总结
    第十二周助教总结
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/data1213/p/4819298.html
Copyright © 2020-2023  润新知