第一讲:C 语言快速入门:从环境搭建到基础概念解析
我的Gitee链接Blog code: 本仓库仅用于存放博客上的代码
一. C语言的定义
跳过,我不爱扯犊子
我学习的时候最讨厌什么定义,历史辉煌,发展来历什么乱七八遭的东西了,我又不关心这个,你们肯定也一样。
二. 编译器的对比和选择
别对比了,就选VS2022
什么对比和选择,直接就用VS2022,因为他好使(XCode我不知道,没用过苹果,买不起)
对比结束,整体考虑,推荐⼤家安装VS2022的社区版本学习,免费,使⽤⽅便,⼯作中常⻅。 VS2022的安装教程:https://www.bilibili.com/video/BV11R4y1s7jz/(感谢鹏哥吧孩子们)
三. VS2022的使用
1.创建新项目
2.点击“空项目”

3. 起名、改位置
4. 新建源文件
在解决方案资源管理器(一般在界面右侧 )中,找到源文件--右键--添加--新建项,改后缀如图
这里的.cpp是C Plus Plus(C++)的意思,如果要练习C语言只需要把后缀改为.c即可。如图

OK,那么现在你就可以写代码了
四. 开始写我们的第一个代码
按住键盘 Ctrl+F5 ,即可运行
可以看到我们的第一个程序已经运行成功,记住这个第一运行的程序,我们会将这个坚定的信念贯穿一生。
五. main函数、printf函数和库函数
我无法将所有的知识一次性讲清,只需关注现在讲的内容,没讲的内容后面会讲
1. main函数
这个函数是程序的入口,一个程序有且只有一个,即便以后一个项目里有多个.c文件,也只能有一个main函数,因此main函数也被称为主函数。
图中,main前面的 int 表示的是main函数执行结束后返回的类型是整形的类型,(整形指的是数据的类型之一,后面讲)而第九行的return 0;这句,表示的是main函数执行结束之后返回0,与前面的int遥相呼应。(如果不懂的话,这段话了解即可,再学两个小时自然而然就懂了)
初期学习时只需记住下面的main函数模版

注意main后面的()不可省略,其中最重要的是里面的(){}和;必须是英文输入的符号,否则VS会报错,如图所示,我将括号改为中文输入的括号,显示错误,其他符号同理。
这是没办法的事情,我国发展太晚了。

2. printf函数
printf的英文全称是 print format,print-打印,formation-格式,printf含义为 “格式化打印”。
在上面的案例中printf函数将“我们必将成功”这句话打印到屏幕上,但是如图所示双引号并没有被打印,这是为什么呢
是的,双引号是一个输入模板,引住的是我们要打印的内容
当然printf函数可以打印其他的数据,如图:

嘿,今天正好是520,我写到这儿的时候,我龟孙儿正打电话嘲讽我520自己一个人过,(上大学前我就和他说我要爆改一下自己的形象找一个漂亮的女朋友,结果我一直都没有爆改,更没有行动)结果给了他嘲讽我的机会了,这龟孙子
在这张图片中又出现了新的知识,这里的%d,%c,%s是什么呢?别急下一大标题讲解
3. 库函数
在上面的图片中,我们可以看到在main函数上方的一句语句
这是什么呢,实际上,printf函数可以理解为一个工具,这个工具不是我们自己制造的,而是由C语言规定,由不同编译器厂商制造的。这些函数组成了⼀个函数库,被称为标准库,这些函数也被称为库函数。
我们在借用舍友的小物品A时,需要提前知会舍友一下,这是礼貌的要求。同样的,我们在使用不是我们创造的函数(即库函数)的时候,也需要跟编译器知会一下,知会的方式就是#include< >。
库函数有很多,后期慢慢来介绍,提前了解可参考:https://cplusplus.com/reference/clibrary/
有的大兄弟问了:啊,万里,我需不需要把这些东西背下来啊。哎呦我的奶呀,你咋那么能背呢,在这个科技腾飞,人工智能如烈火烹油似发展的时代,靠死记硬背的学习方法,注定会被时代淘汰的,我们要做的是熟练的使用,自己经常敲代码,经常实操,背,你能背的过电脑嘛,你这背那背的,真要让你成功了,腾讯录用了你,马化腾半夜都得被你吓醒,“哎呦我的奶,那小子不会把我腾讯的几十亿行代码背下来了把,哎呦俺娘嘞,受不了了,必须把这小子留在我身边,我资本必须给他做局,最终做局十年,只为让你背错一行代码,最终你走在大街上只能高喊‘啊啊啊,资本,你赢了,我背代码的青春就送你了,可恨我为出生在最强大脑家族,不然我从出生的时候就会培养背代码的能力,待到我18岁成年之后,只需工作一小时就能将腾讯几十亿行的代码给背下来,可我终究是动了资本的蛋糕、炸酱面、热干面、刀削面、拉面、烩面、螺蛳粉、桂林米粉、过桥米线、肠粉、延吉冷面、担担面、重庆小面、驴肉火烧、肉夹馍、灌汤包、烧麦、蒸饺、糯米鸡、荷叶饭、煲仔饭、手抓饭、菠萝饭、炒年糕.....,让资本做局将我打压!!!!!’”到时候我们会笑话你的兄弟,熟悉就好,多实操就记住了,别靠背
六. 数据类型、占位符、转义字符、ASCII码表和关键字

这里的%d,%c,%s是什么呢?要讲清楚这个问题,那龟孙又给我打电话了,正好,我们先来讲一个小故事。
有一天,学校开了一个讲座,我、李四和王五都想去参加,三人结伴而行,但是在三个人马上进入讲堂的时候,李四受不了了,因为他儿子李某远出生了,于是他对我说,老爸,你拿我书包去帮我占个座呗,我五分钟之后就来,王五一听,也想让我拿着他的帽子,去帮他占个座位。于是我进入报告厅给他们两个占了个座位。这个书包和帽子就叫做占位工具。后来学校为了让学生更方便,规定给男生占座要用书包,给女生占座要用帽子。
这里的%d,%c,%s就叫占位符,它们的作用等同于书包和帽子,就是告诉函数说“这个位置有人了,一会人来了就做这个位置”。学校规定不同性别的同学要用不同的工具占座位。同理,不同类型的数据的也要用不同的占位符。因此,在讲解占位符之前,我们需要先讲解数据的类型。
1. 数据类型
首先,同学分为男同学和女同学,那C语言中数据分为几种类型呢,如图所示

自定义类型一时无法讲清,今天我们先来学习内置类型,这里不进行复杂的讲解,简单概括。
1.1 字符型
1.2 整型
1.3 浮点型
1.4 布尔类型
C 语言原来并没有为布尔值单独设置一个类型,而是使用整数 0 表示假,非零值表示真。
在 C99 中引入了布尔类型,是专门表示真假的。布尔类型的使用得包含头文件 <stdbool.h>,布尔类型变量的取值只有两个,分别是:true 或者 false。如图

将lisi这个变量定义为false再运行一遍:
2. 占位符
从上文所讲的我、李四和王五的故事中我们可以知道,占位符就像是书包和帽子一样占位置的,如图:

我们知道,不同的数据要用不同的占位符。以下是占位符的列举(初期只用了解加黑的就够了):
%a:十六进制浮点数,字母输出为小写。
%A:十六进制浮点数,字母输出为大写。
%c:字符。
%d:十进制整数(有符号的10进制整数)。
%e:使用科学计数法的浮点数,指数部分的e为小写。
%E:使用科学计数法的浮点数,指数部分的E为大写。
%i:整数,基本等同于%d。
%f:小数(包含float类型和double类型)。float——%f double——%lf
%g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e为小写。
%G:等同于%g,唯一的区别是指数部分的E为大写。
%hd:十进制short int类型。
%ho:八进制short int类型。
%hx:十六进制short int类型。
%hu:unsigned short int类型。
%ld:十进制long int类型。
%lo:八进制long int类型。
%lx:十六进制long int类型。
%lu:unsigned long int类型。
%lld:十进制long long int类型。
%llo:八进制long long int类型。
%llx:十六进制long long int类型。
%llu:unsigned long long int类型。
%Le:科学计数法表示的long double类型浮点数。
%Lf:long double类型浮点数。
%n:已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
%o:八进制整数。
%p:指针(用来打印地址)。
%s:字符串。
%u:无符号整数(unsigned int)。
%x:十六进制整数。
%zd:size_t类型。
%%:输出一个百分号。
最后,使用字符的时候要用 ‘ ’ 将字符扩住,就像打印字符串的时候要将字符串用 “ ” 扩住一样。
你小子是不是又要背了,Looking in 刀哥 eyes,想背诵就去上面我写的红字故事看看,资本要给你做局了噢,
你这么能背,谁感用你啊,万一你把人家公司几十亿行代码背下来怎么办哈哈哈
不支持背,一是因为死记硬背不可取,二是为了让你在初期的时候负担不重,很多人吧,一开始想做什么事情,他就直接给自己上最高强度,就像健身,第一天就给自己练的爬不起来,表面上是很有进步,实际上他已经把自己的热情、耐力一下子全消耗没了,然后的几天甚至更久都没有动力健身,最后不仅没成果,还浪费了时间,从长期的眼光来看,这可不是聪明的选择,人们总是高估自己短期能够做到的事情,却低估自己长期能够做的事情,在面对一个巨大的任务时,循序渐进并坚持不懈才是良策。
3.转义字符

还是这张图片,如图,我们已经学习了头文件(装库函数这个工具的“箱子”)、main函数(程序的入口)、printf函数(最简单的库函数)、占位符(类似书包和帽子)、还学习了C语言的数据的类型,到此为止,这张图片中只剩两个我们不知道的东西,一个是“ \n ”,一个是 int 和 return
我们先来讲解第一个——转义字符:\n
现在我们把 \n 去掉,再次运行程序,如图

我们对比发现,这时打印的内容不分行了,说明 \n 的作用是让打印的内容分行,可是 \n 明明只是字符 '\' 和字符 'n' 的组合,为什么会有这个功能呢,这是因为其实在字符中有⼀组特殊的字符 是转义字符,转义字符,顾名思义:转变原来的意思的字符。就像 \n 它的意义变为了“换行”这一功能,我们可以简单的理解为 \ 让 n 的意思发生了转变,n 本来是一个普通的字符,被 \ 转义为换行的意思。
C 语言中像这样的转义字符还有一些,具体如下:
\?:在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
\':用于表示字符常量'
\":用于表示一个字符串内部的双引号
\\:用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a:警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
\b:退格键,光标回退一个字符,但不删除字符。
\f:换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于 \v。
\n:换行符。
\r:回车符,光标移到同一行的开头。
\t:制表符,光标移到下一个水平制表位,通常是下一个 4/8 的倍数。
\v:垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列。
各位可以自己练习使用这些转义字符,多练习,通过练习掌握知识才是王道
而下面 2 种转义字符与其他转义字符不同,可以理解为:字符的 8 进制或者 16 进制表示形式
\ddd:ddd 表示 1~3 个八进制的数字。 如:\130 表示字符 X
\xdd:dd 表示 2 个十六进制数字。 如: \x30 表示字符 0
\0:null 字符,代表没有内容,\0 就是 \ddd 这类转义字符的一种,用于字符串的结束标志,其 ASCII 码值是 0。
看到这里你也许会对这句“字符的 8 进制或者 16 进制表示形式”和“ASCII码值”困惑,要解决这个困惑,我们就需要学习ASCII码表
4. ASCII码表
我们在键盘上可以敲出各种字符,如:a,q,@,# 等,这些符号都被称为字符,C 语言中字符是用单引号括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了一个标准ASCII 编码,C 语言中的字符就遵循了 ASCII 编码的方式。如图:

我们不需要记住,使用时随用随查看就可以了,不过可以记住一些特殊的数据:
字符A~Z的ASCII码值从65~90
字符a~z的ASCII码值从97~122
对应的大小写字符(a和A)的ASCII码值的差值是32
数字字符0~9的ASCII码值从48~57
换行 \n 的ASCII值是:10
在这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察
有的很无聊的考试,比如大计(大学计算机)考试,就特别喜欢考:大写英文字母字符的ASCII码值是不是比小写英文字母字符的ASCII码值大,回答:不是,小写的ASCII值大,非常无聊
5.关键字

还是这张图片,如今我们唯一不知道的就是这个 int 和 return 的含义了。
该图中的这两个单词为:关键字,就是由C语言定义的有关键含义的字
C 语言中有一批保留的名字的符号,比如:int、if、return,这些符号被称为保留字或者关键字。
- 关键字都有特殊的意义,是保留给 C 语言使用的
- 程序员自己在创建标识符的时候是不能和关键字重复的
- 关键字也是不能自己创建的。
C 语言的 32 个关键字如下:
- auto break case char const continue default do double else enum extern
- float for goto if int long register return short signed sizeof static
- struct switch typedef union unsigned void volatile while
注:在 C99 标准中加入了 inline、restrict、_Bool、_Complex、_Imaginary 等关键字。
一些关键字大家可以去了解一下,不过使用最多的还是上面的 32 个关键字。
你小子是不是要点进去,
别点,点也没用,你学习初期给自己增添那么逗负担干什么呢,没必要。
如果你小子非要点进去,那就点个赞再走,嘿嘿嘿。
七. 结束总结
没啥好总结的,就是最最基础的知识介绍,嗯,希望能够得到你的关注,希望我的内容能够给你带来帮助,希望有幸能够和你一起成长。
写这篇博客的时候天气很好,我走到阳台拍下了一张宿舍对面的照片作为本文的封面。
更多推荐


所有评论(0)