我的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<  >。

⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。可以理解为一系列相似的工具存放在一个箱子中,我们要使用库函数(工具)的时候,就需要引用一下对应的头文件(对应的箱子)。上面图片中stdio.h就是对应的头文件(对应的箱子)。
stdio.h 的全称为 “Standard Input Output Header” ,中文意思是 “标准输入输出头文件” 。它是 C 语言中的一个标准库头文件,包含了各种与输入输出相关的函数和宏定义 ,像常见的标准输入函数scanf、标准输出函数printf等函数声明都在这个头文件里 

库函数有很多,后期慢慢来介绍,提前了解可参考:https://cplusplus.com/reference/clibrary/

有的大兄弟问了:啊,万里,我需不需要把这些东西背下来啊。哎呦我的奶呀,你咋那么能背呢,在这个科技腾飞,人工智能如烈火烹油似发展的时代,靠死记硬背的学习方法,注定会被时代淘汰的,我们要做的是熟练的使用,自己经常敲代码,经常实操,背,你能背的过电脑嘛,你这背那背的,真要让你成功了,腾讯录用了你,马化腾半夜都得被你吓醒,“哎呦我的奶,那小子不会把我腾讯的几十亿行代码背下来了把,哎呦俺娘嘞,受不了了,必须把这小子留在我身边,我资本必须给他做局,最终做局十年,只为让你背错一行代码,最终你走在大街上只能高喊‘啊啊啊,资本,你赢了,我背代码的青春就送你了,可恨我为出生在最强大脑家族,不然我从出生的时候就会培养背代码的能力,待到我18岁成年之后,只需工作一小时就能将腾讯几十亿行的代码给背下来,可我终究是动了资本的蛋糕、炸酱面、热干面、刀削面、拉面、烩面、螺蛳粉、桂林米粉、过桥米线、肠粉、延吉冷面、担担面、重庆小面、驴肉火烧、肉夹馍、灌汤包、烧麦、蒸饺、糯米鸡、荷叶饭、煲仔饭、手抓饭、菠萝饭、炒年糕.....,让资本做局将我打压!!!!!’”到时候我们会笑话你的兄弟,熟悉就好,多实操就记住了,别靠背

六. 数据类型、占位符、转义字符、ASCII码表和关键字

这里的%d,%c,%s是什么呢?要讲清楚这个问题,那龟孙又给我打电话了,正好,我们先来讲一个小故事。

有一天,学校开了一个讲座,我、李四和王五都想去参加,三人结伴而行,但是在三个人马上进入讲堂的时候,李四受不了了,因为他儿子李某远出生了,于是他对我说,老爸,你拿我书包去帮我占个座呗,我五分钟之后就来,王五一听,也想让我拿着他的帽子,去帮他占个座位。于是我进入报告厅给他们两个占了个座位。这个书包和帽子就叫做占位工具。后来学校为了让学生更方便,规定给男生占座要用书包,给女生占座要用帽子。

这里的%d,%c,%s就叫占位符,它们的作用等同于书包和帽子,就是告诉函数说“这个位置有人了,一会人来了就做这个位置”。学校规定不同性别的同学要用不同的工具占座位。同理,不同类型的数据的也要用不同的占位符。因此,在讲解占位符之前,我们需要先讲解数据的类型。

1. 数据类型

首先,同学分为男同学和女同学,那C语言中数据分为几种类型呢,如图所示

自定义类型一时无法讲清,今天我们先来学习内置类型,这里不进行复杂的讲解,简单概括。

1.1 字符型

字符的英⽂单词是 character ,在C语⾔中使⽤ char 表⽰字符类型。
字符的含义就是一个符号,s、a、1、2、&、%、¥、#这些都叫字符。
字符型又分为[signed]char(有符号的字符)和unsigned char(无符号的字符)

1.2 整型

整数的英⽂单词是 integer ,在C语⾔中使⽤ int 表示 整型类型。 整形的分类如图:
signed的含义为有符号,unsigned的含义为无符号,[ ]的含义是里面的内容可以省略。

1.3 浮点型

就是小数,为什么叫做浮点型呢,因为0.5可以写成5×10的负一次方,也可以写成0.05×10的一次方,这个小数点是可以左右浮动的,故称浮点型。
浮点型又分为单精度浮点数:float、双精度浮点数:double、更高精度的浮点数:long double

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.关键字

还是这张图片,如今我们唯一不知道的就是这个 intreturn 的含义了。

该图中的这两个单词为:关键字,就是由C语言定义的有关键含义的字

C 语言中有一批保留的名字的符号,比如:int、if、return,这些符号被称为保留字或者关键字。

  • 关键字都有特殊的意义,是保留给 C 语言使用的
  • 程序员自己在创建标识符的时候是不能和关键字重复的
  • 关键字也是不能自己创建的。

C 语言的 32 个关键字如下:

  1. auto break case char const continue default do double else enum extern
  2. float for goto if int long register return short signed sizeof static
  3. struct switch typedef union unsigned void volatile while

注:在 C99 标准中加入了 inline、restrict、_Bool、_Complex、_Imaginary 等关键字。

一些关键字大家可以去了解一下,不过使用最多的还是上面的 32 个关键字。

注:https://blog.csdn.net/2401_86187158/article/details/148086252?fromshare=blogdetail&sharetype=blogdetail&sharerId=148086252&sharerefer=PC&sharesource=2401_86187158&sharefrom=from_link(C 语言关键字的全部介绍)

你小子是不是要点进去,别点,点也没用,你学习初期给自己增添那么逗负担干什么呢,没必要。

如果你小子非要点进去,那就点个赞再走,嘿嘿嘿。

七. 结束总结

没啥好总结的,就是最最基础的知识介绍,嗯,希望能够得到你的关注,希望我的内容能够给你带来帮助,希望有幸能够和你一起成长。

写这篇博客的时候天气很好,我走到阳台拍下了一张宿舍对面的照片作为本文的封面。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐