数据类型,生命周期&作用域

目录

数据类型:

生命周期&作用域:


数据类型:

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

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

#include<stdio.h>
int main()
 {
	printf("%zu\n", sizeof(char));
	printf("%zu\n", sizeof(short));
	printf("%zu\n", sizeof(int));
	printf("%zu\n", sizeof(long));
	printf("%zu\n", sizeof(long long));
	printf("%zu\n", sizeof(float));
	printf("%zu\n", sizeof(double));
	return 0;
}

运行结果:

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

生命周期&作用域:

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

        以下面代码为例

#include<stdio.h>
int global_a = 20;
int main()
{
    {
        int local_a = 10;
        printf("local_a = %d",local_a);
    }
    printf("local_a = %d",local_a);

    return 0;
}

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

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

#include<stdio.h>
extern int global_a;
int main()
{
    printf("%d\n",global_a);
    return 0;
}

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

#include<stdio.h>
int a = 10;
int main()
{
    printf("%d\n",a);
    int a = 20;
    printf("%d\n",a);
    return 0;
}

运行结果如下:

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值