0基础学C语言(1)—— 超详解-->《初识C语言》

数据类型

在C语言中,我们有很多数据类型
那么我们不禁思考:
1.为什么有这么多数据类型
2.他们的大小是多少?他们都有什么用?
的确,这是一些不错的问题,
先来看这样一段代码:(sizeof是一个求大小的关键词,以后会详细介绍)

  	printf("%d\n", sizeof(char));   		 1      
    printf("%d\n", sizeof(short));  		 1 
    printf("%d\n", sizeof(int)); 			 4
    printf("%d\n", sizeof(long));     		 4
    printf("%d\n", sizeof(long long));		 8
    printf("%d\n", sizeof(float));			 4
    printf("%d\n", sizeof(double)); 		 8
    printf("%d\n", sizeof(long double));     8

那么打印出来的结果是什么呢?
继续来看
分别对应是1 1 4 4 8 4 8 8
看到这里大家肯定有疑惑,这一串数字代表什么含义?单位是什么?是1年?1爽? 还是什么?
在这里插入图片描述
好像并不知道

因为计算机只能够识别二进制,二进制中只有1/0(正负电),当我们要存储一个1/0(二进制)的时候,我们就需要计算机来开辟一块空间,用来存放我们的0/1,那么我们此时一个1/0所占的大小是多少呢?
就是:
一个比特位bit
那么我们在上面算出的一系列的数字又是以什么为单位的呢?
答案是:
字节byte
在计算机内存中,最小的单位是bit(比特位,)还有,byte、kb、mb、gb等等,他们都是计算机内存中的储存单位
附上换算比例:

在这里插入图片描述
所以,我们就知道了:当我要存储一个int类型的变量时,我们就要从内存上分配4个字节的空间来储存这个变量,那么这就是上方计算出的4,在这里指的是这个类型所占空间的大小

变量vs常量

生活中的有些值是不变的(比如:圆周率,性别(?),身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)。
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

定义变量的方法

int age = 150;
float weight = 45.5f;
char ch = 'w';

变量的定义

上面我们提到了,当我们创建一个变量时
例如:int a=10;

可以从右向左看 10 -> = -> a
本质含义是: 将10 通过=(赋值操作符) 赋给了a,所以使a=10

根据我们上面所说的数据类型,我们创建的变量一定是有一个类型的,在这里是int类型(整型变量)

变量的作用域和生命周期

作用域是指:

作用域(scope),程序设计概念,通常来说,一段程 序代码中所用到的名字并不总是有效/可用 的
而限定这个名字的可用性的代码范围就是这个名字的作用域。

并且要注意:
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。

而生命周期是指:

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

**注意:

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期**

局部变量 vs全局变量

如果说局部变量是:在main函数中定义的变量 这个说法是否有问题?
的确有!


void game()
{
	int a = 0;
}
int main()
{

int b=10;
}

其实这个谈到了生命周期这个概念,

1.定义在代码块{}中的变量称为局部变量 (局部变量的生命周期是当前代码块内)
2.定义在代码块外部的变量称为全局变量(全局变量的生命周期是整个文件)

并且,在同一个范围内不可以重复定义同一个变量

再看一段代码
int a = 100;(这里的a是一个全局变量

int main()

{	
	int a = 10;
	printf("%d", a);
	return 0;
}

思考一下,当全局变量和局部变量的命名相同时,我们打印出来的a会等于几呢?
不要着急看答案~先自己思考10s
在这里插入图片描述

在这里插入图片描述
答案是10
通过这个答案我们可以知道,当全局变量和局部变量命名相同时,打印的值是局部变量,怎么思考这个问题呢?在上面我们学习到了变量的定义,那么我们就可以形象的把a看做一个容器
在这里插入图片描述

我们这里就可以把a看做一个容器,第一次给了一个10,他就等于10,但是当我放了一个20进去的时候,20把10给压死了 覆盖掉了(通过赋值操作符‘=’),所以此时a=20;同理 当全局变量等于100,进入局部变量时,被10覆盖掉了,这样是不是就想通了?

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值