当前位置:   article > 正文

数据类型,生命周期&作用域_作用域和生命周期的区别

作用域和生命周期的区别

目录

数据类型:

生命周期&作用域:


数据类型:

        在C语言中,数据类型一共有char(字符型)、short(短整型)、int(整型)、long(长整型)、 long long(更长的整型)、float(单精度浮点型)、double(双精度浮点型) 7种基础数据类型,要注意的是C语言没有 布尔类型(bool),每种数据类型可以在内存中开辟不同的大小。

测试样例:(%zu中,u表示无符号整型,z表示sizeof()的返回值,使用%zu可以防止编译器报警告)

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%zu\n", sizeof(char));
  5. printf("%zu\n", sizeof(short));
  6. printf("%zu\n", sizeof(int));
  7. printf("%zu\n", sizeof(long));
  8. printf("%zu\n", sizeof(long long));
  9. printf("%zu\n", sizeof(float));
  10. printf("%zu\n", sizeof(double));
  11. return 0;
  12. }

运行结果:

        其中,每个数据的单位是字节(byte),1字节等于8个二进制位(bit)

生命周期&作用域:

        作用域与生命周期是两个完全不同的概念。作用域是一个静态概念,旨在编译源程序的时候用到。一个标识符的作用域指在源文件中该标识符能够独立的合法出现的区域,生命周期则是一个程序运行时的概念,它指的是变量在整个程序中载入到结束运行的过程中存在的时间周期。函数和数据类型是静态的概念,所以没有生命周期的说法,它们从编译、程序的运行到结束是一直存在的。

        以下面代码为例

  1. #include<stdio.h>
  2. int global_a = 20;
  3. int main()
  4. {
  5. {
  6. int local_a = 10;
  7. printf("local_a = %d",local_a);
  8. }
  9. printf("local_a = %d",local_a);
  10. return 0;
  11. }

在main函数中,loacl_a可以在定义的大括号内使用,而出了这个代码块,无法调用local_a则称其作用域为定义其的代码块,其生命周期就是在定义它之后,到离开定义其所在的代码块,所以生命周期也能近似等于作用域。

全局变量的作用域为当前项目,若要调用其他文件中的变量可以利用extern进行声明,让编译器知道改变量已被定义,防止产生bug

  1. #include<stdio.h>
  2. extern int global_a;
  3. int main()
  4. {
  5. printf("%d\n",global_a);
  6. return 0;
  7. }

在变量使用时,局部变量优先,例如:

  1. #include<stdio.h>
  2. int a = 10;
  3. int main()
  4. {
  5. printf("%d\n",a);
  6. int a = 20;
  7. printf("%d\n",a);
  8. return 0;
  9. }

运行结果如下:

全局变量a的值为10,所以第一个打印的是10,打印完成后,定于局部变量int a = 20,此时a=20为局部变量,a=10为全局变量,优先调用局部变量所以打印20

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/495763
推荐阅读
相关标签
  

闽ICP备14008679号