大家好,欢迎来到IT知识分享网。
在开始学 C 语言的时候,咱们就像刚进到一个以前都没去过的地方,对一切都充满好奇。
最开始,我们就好比找到了这个地方的大门入口,学会了怎么让计算机输出 “Hello, World!” 。
这就像是你第一次走进游乐场,看到那标志性的大门,兴奋又新鲜。
有了这个基础,咱们对 C 语言这个神奇的 “游乐场” 就更感兴趣了,迫不及待想知道接下来还有哪些好玩的东西等着我们去探索。


这节课,我们将踏入 C 语言数据的奇妙世界,认识数据类型与变量。
一、数据类型
计算机要处理的东西五花八门,一会儿是数字,一会儿是文字,还有各种复杂的信息。就好比你有一堆不同的宝贝,大箱子、小盒子、零碎小物件啥都有。
为了能把这些宝贝规整地收纳好,想用的时候能快速找到,C语言就想出了好多办法,弄出了各种各样的数据类型,专门用来存放不同类型的数据,这样管理起来又方便又高效 。
(一)基本数据类型
- 整型(int):用于存储整数,如 1、 -5、1000 等。在一般的系统中,int 类型通常占用 4 个字节(32 位),能表示的范围大概是 – 到 。
等会下面我就为大家举个例子,帮助大家理解学习。
eg:一个整型变量来存储班级学生人数。
1. 存储整数的用途
在现实生活中,我们经常会遇到需要计数的情况,比如统计班级学生人数、书架上书的数量、一个月的天数等,这些数量都是整数。
在 C 语言里,int 类型就像是一个专门用来装整数的 “盒子”,可以把像 1、 -5、1000 这样的整数放进去。
举个例子,你在统计班级学生人数时,这个人数肯定是一个整数,不会出现小数或者分数,这时候就可以用 int 类型来存储这个人数。
2. 占用字节和位数的含义
计算机存储数据是以二进制的形式进行的,二进制只有 0 和 1 两个数字。
一个二进制位(bit)就是一个 0 或者 1,8 个二进制位组成一个字节(Byte)。
int 类型通常占用 4 个字节,也就是 32 位,这意味着它可以用 32 个 0 或者 1 来表示一个整数。就好比你有 32 个小格子,每个格子可以放 0 或者 1,通过不同的排列组合,就能表示出不同的整数。
3. 表示范围的理解
由于 int 类型用 32 位来表示整数,而且最高位(第 32 位)是用来表示正负号的(0 表示正数,1 表示负数),剩下的 31 位用来表示数值大小。
所以它能表示的最大正数就是 31 位全为 1 的情况,转换为十进制就是 ;能表示的最小负数就是最高位为 1,其余 31 位全为 0 的情况,转换为十进制就是 -。
这就好比你的 32 个小格子,有一个格子专门用来标记这个数是正还是负,剩下的 31 个格子用来组合出具体的数值,但是组合的方式是有限的,所以能表示的整数范围也是有限的。
4. 示例代码举例
在这个代码中,我们定义了一个 int 类型的变量 studentNumber,就相当于准备了一个 “盒子”,然后把 50 这个整数放进了这个 “盒子” 里。最后通过 printf 函数把这个 “盒子” 里的内容打印出来。
只要班级学生人数在 – 到 这个范围内,都可以用 int 类型的变量来存储。但如果班级学生人数超过了这个范围,就需要使用其他类型来存储了。

- 浮点型单精度浮点型(float):用于存储小数,精度有限,通常占用 4 个字节。
eg:比如定义一个变量存储商品价格,因为商品价格通常是小数:

- 双精度浮点型(double):同样用于存储小数,但精度比 float 更高,占用 8 个字节。适合对精度要求较高的场景,像科学计算。例如:

- 字符型(char):用于存储单个字符,如‘a’、‘B’、‘$’等。它占用 1 个字节,本质上存储的是字符对应的 ASCII 码值。
eg:定义一个变量存储性别:


eg:让用户输入性别:
当出现这样的问题的时候,我们应该怎么处理呢?方法我学到了两个:
其一:#define _CRT_SECURE_NO_WARNINGS添加这个加以定义,添加的位置,在首行添加

如果你输出错误,它就会打个问号,所以这个要输出正确的格式。如下图所示:

正确演示:


其二:scanf_s,使用scanf_s替代scanf

(二)构造数据类型
- 数组:是一组相同类型数据的集合。比如要存储一个班级 50 个学生的成绩,就可以使用数组:
eg1:初始化数组并计算平均分



eg2:从用户输入获取成绩并计算最高分



最高的成绩是多少,它都能帮你找出来,简单快捷。
eg3:随机生成成绩并统计及格人数


通过对比,我们可以看出这个是随机生成的,所以及格人数也是随机的。
- 结构体(struct):把不同类型的数据组合成一个有机的整体。例如,要描述一个学生的信息,包括姓名(字符数组)、年龄(整型)、成绩(浮点型),就可以使用结构体:
eg1:学生的信息
struct 是 C 语言中用于定义结构体的关键字,Student 是结构体的名称(可以根据实际情况取合适的名字)。
在结构体的大括号内,依次定义了三个成员变量,分别是 name(字符数组类型)、age(整型)和 score(浮点型)。
这三个成员变量共同组成了一个 Student 结构体类型,它可以用来表示一个学生的完整信息。
图1:单个学生信息


图2:多个学生信息


eg2:一本书的信息
struct 是定义结构体的关键字,Book 是结构体的名称。
在大括号内,依次定义了四个成员变量:title(字符数组,存储书名)、author(字符数组,存储作者姓名)、year(整型,存储出版年份)和 price(浮点型,存储书的价格)。
这些成员变量共同构成了 Book 结构体类型,用于表示一本书的完整信息。
通过这两个例子,大家也应该了解个大概了吧。通过这些例子,大家也可以自己尝试举例,尝试编辑代码。

当我们编译出基本代码的时候,有时候会出现一些bug,遇到问题那就去想办法解决,对于新手的我而言,就是搜索资料,找到好的解决办法。
解决办法1:
在小数常量后面加上 f 或 F,这样就可以将其指定为 float 类型,避免类型不匹配的问题。
解决办法2:
不想使用 strcpy_s,可以通过定义 _CRT_SECURE_NO_WARNINGS 来处理。


课后例子:
eg1:描述一个员工信息(员工编号、姓名、职位、月薪)
eg2:描述一个日期(年、月、日)
eg3:描述一个二维平面上的点(二维平面上的点,点的位置由横坐标和纵坐标)
参考我学习编写的代码:

eg1

eg2

eg3.1

eg3.2
- 联合体(union):联合体中的成员共享同一块内存空间,同一时刻只能存储其中一个成员的值。它在节省内存空间等特定场景下有用。
通俗点理解:想象你有一个小百宝箱,它一次只能装一样东西。
你可以往里面放一颗漂亮的弹珠,也可以放一块香香的橡皮,或者放一张精美的贴纸,但不能同时把弹珠、橡皮和贴纸都放进去。当你放入新东西的时候,原来的东西就会被拿出来。


虽然在每个时刻,联合体中确实只有一个成员的值是有效的,但在程序运行的过程中,我们可以依次对不同的成员进行操作,展示不同成员的值,所以你会看到这三个不同的输出结果,而不是只出现一个。
(三)指针类型
还没学习这个知识点的时候,就听说这个点很难,那么我们一起来看看,了解之后,看看大家觉得这个知识点如何?
指针是 C 语言的一大特色,它存储的是变量的内存地址。通过指针可以高效地操作内存。
你可以把内存想象成一个超大的公寓楼,每一个房间就是一个存储数据的地方。每个房间都有自己独一无二的房间号,这个房间号就好比是内存地址。
指针呢,就像是写着房间号的小纸条。它本身存的不是数据(比如不是住在房间里的人或者家具这些东西),而是房间号,也就是变量在内存中的地址。
有了这张小纸条(指针),我们就能很快速地找到对应的房间(内存位置),对里面的数据进行各种操作,这就叫通过指针高效地操作内存 。
比如说,你想找住在某个房间的人,有了写着房间号的纸条,就能很快找到那个房间,而不用一个房间一个房间去试。

(四)空类型(void)
void 类型表示 “无类型”。常用于函数返回值类型(表示函数不返回任何值)以及函数参数列表(表示函数没有参数)。

二、变量
变量是存储数据的容器
在超市里,每个货架都有它专门的用途,有的放饮料,有的放零食,有的放日用品。
在程序里,变量就和这些货架一样,是专门用来存放数据的。数据就像是超市里的商品,比如数字、文字等。
不同的变量能存放不同类型的数据,就像不同的货架放不同种类的商品。
使用变量前要先声明
在超市里,你不能随便找个地方就开始放商品。你得先和超市管理员说,你要一个货架来放东西。
在程序里也是一样,你想用一个变量来存放数据,就得先告诉计算机你要怎么做,这就是 “声明变量”。
要是不先声明就直接用,计算机就会 “懵圈”,不知道你说的是哪个 “货架”,然后就会报错。
声明变量要指定数据类型和变量名
- 数据类型:这就好比你跟超市管理员说,你要的这个货架是用来放饮料、零食,还是日用品。
- 在程序里,数据类型规定了这个变量能存放什么样的数据。比如,有的变量只能放整数,有的能放带小数点的数,还有的能放文字。
- 变量名:这就像是给每个货架都贴上一个独一无二的标签。在超市里,有了标签,工作人员就能很快找到对应的商品。
- 在程序里,有了变量名,计算机就能准确地找到你存放的数据。变量名得是有意义的,让人一看就知道这个 “货架” 上大概放的是什么 “商品”。
举个例子,假如你要在程序里记录一个人的年龄,年龄一般是整数,你就可以跟计算机说:“我要一个叫 person_age 的‘货架’,专门用来放整数。” 用代码表示就是:

这里的 int 就是数据类型,表示只能放整数;person_age 就是变量名,能让你很容易就知道这个变量是用来存人的年龄的。之后,你就可以把具体的年龄数据放到这个 “货架” 上,比如:
这里,计算机就把 25 这个数据存到 person_age 这个变量里了。

(一)变量声明
- 基本格式
数据类型:数据类型决定了变量可以存放的数据的类型和范围,同时也决定了变量在内存中所占的存储空间大小以及能对其进行的操作。
变量名:变量名是用来标识变量的名称,在使用变量时,通过变量名就可以对其进行赋值、读取值等操作。变量名需要遵循一定的命名规则:
- 通常由字母(大写或小写)、数字和下划线组成。
- 不能以数字开头。
- 不能是编程语言的关键字(如 int、if、while 等)。
- 为了提高代码的可读性,变量名应该具有描述性,能够反映变量所存储的数据的含义。

- 同时声明多个变量
可以在一行中声明多个相同类型的变量,变量名之间用逗号隔开:

int num1, num2, num3;
(二)变量初始化
在声明变量的同时给变量赋予初始值,称为变量初始化。
把变量想象成一个存钱罐,声明变量就相当于你准备了一个存钱罐,而变量初始化就是在你拿到存钱罐的那一刻,就往里面放了一些钱。
假如你买了三个不同的存钱罐,一个用来存零花钱,一个用来存压岁钱,一个用来存奖学金。你刚拿到存零花钱的存钱罐时,就放了 50 元进去,这 50 元就是这个存钱罐(变量)的初始值。

- 单个变量初始化
为啥要变量初始化?
- 避免使用未定义的值:如果变量没有初始化,它可能包含一个随机的、不可预测的值。
- 对这个未初始化的变量进行操作,可能会导致程序出现难以调试的错误。而初始化变量可以确保变量从一开始就有一个明确的值,提高程序的可靠性。
- 提高代码可读性:在声明变量时就初始化,能让阅读代码的人快速了解这个变量的用途和初始状态。
- 例如,int daysInWeek = 7; 从变量名和初始值可以清楚知道这是表示一周的天数。
数据类型 变量名 = 初始值;
int age = 20; float height = 1.75f; char ch = 'A';
- 多个变量初始化
01.分别初始化多个同类型变量

02.初始化多个不同类型变量

03.初始化数组变量

数据类型 变量名1 = 初始值1, 变量名2 = 初始值2, 变量名3 = 初始值3;
int a = 5, b = 10, c = 15;
(三)变量命名规则
在 C 语言里创建变量名有这些规定:
01.只能用字母(大写 A 到 Z、小写 a 到 z)、数字(0 到 9)以及下划线(_)来组合。
02.并且开头第一个字符得是字母或者下划线,绝不能是数字。
03.还有,变量名不能和 C 语言里那些有特殊用途的词,像 int、float、if、while 这些一样。
04.另外,变量名大小写是有区别的,count 和 Count 就代表两个不同的变量。
三、案例演示
计算圆的面积和周长:


这节课咱们一起认识了 C 语言里的数据类型和变量,虽说才刚起步,但这可是 C 语言学习路上特别关键的一步。
数据类型就像不同规格的小盒子,有装整数的、装小数的、装单个字符的,各有各的用处;
变量呢,就是给这些小盒子贴上的名字,方便咱们在程序里用它们存数据。
接下来,咱们还要接着深入学习怎么摆弄这些数据,到时候就能写出更复杂、更好玩的程序啦。
就像搭积木,现在咱们认识了不同形状的积木,往后就要学习怎么把它们搭成超酷的造型。
我特别希望大家课后能多动手写代码,多实践。纸上得来终觉浅,绝知此事要躬行,光听我讲可不够,自己动手敲敲代码,多调试调试,遇到问题再解决问题,这样对这些知识的理解才能更深刻。
说不定你在实践的时候,还能发现一些更有意思的玩法,期待大家在 C 语言学习里都能玩得开心,收获满满!#在头条记录我的2025#
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/187112.html