C语言完全听懂系列 - day2
- 操作系统负责管理所有软件,比如说任务管理器里就能看到正在运行的所有软件,还能直接强制结束某个软件的运行
- 当我们点开一个.exe时,操作系统会找到这个软件的第一行代码,开始一条一条往下顺序执行,一直执行完最后一条,执行结束后,软件会自动退出
- 现代软件往往会写一个死循环,从而让自己在没有用户操作的时候,一直保持运行,永远不会结束,直到用户点右上角的X,才会退出
- 也就是说有两种类型的软件,第一种打开之后,执行完命令123,做完了该做的事,直接退出了; 第二种比如说浏览器,打开之后,用户不点就一直在死循环保持运行,有用户操作就执行用户操作,用户点了右上角的x之后,退出循环,结束了。我们暂时只关注第一种更简单的情况。
- 我们删掉所有默认生成的基本代码,然后我们从零开始写。上面提到操作系统会找到每个软件的第一行代码开始执行,那我们就需要告诉操作系统,哪里是整个软件的入口,最开始执行的位置,我们约定这个“开始的地方”叫main函数,中文叫主函数,写出来像下面这样
int main() {
}
- 对于任何一个软件,操作系统都会找到他的主函数,开始一条一条顺序执行
- 我们的主函数现在什么都没有,尝试做点什么。从现在开始,如果代码里有困惑的地方,比如这个单词是什么意思,往后放放,跟着写就好,我稍后会解释的。
- 编程界有一个奇怪的仪式,新人的第一行代码,是让计算机讲一句Hello world,完成了你的圣洗仪式之后,我们即是兄弟姊妹了,主将与你同在。写一句下面这个
int main() {
printf("Hello World");
}
-
我发现软件自动开启了AI提示,现在先不要开,Ctrl + Alt + S,然后把这个取消勾选,OK
-
-
print是打印的意思,f是指这条指令也支持格式化输出,format的缩写,后面会用到。
-
编程领域,数据可以基本分为两大类,数字和文本
- 在代码中,所有文本内容都要加双引号,这样编译器才知道这些字符是一段连续的文本数据。
- 对于编译器来讲,他在解析你写的代码文件时,看到你写了一个printf,他可能认为你在写一条指令,但是你写“printf”,他才会知道你想要的是一段文本数据,内容是printf而已。需要双引号来消除歧义。
-
所以我们相当于写了一句,打印hello world这段文本。c语言的每条指令都要以分号结束,就像汉语的每句话都会以句号结束,编译器也需要断句。c语言之父死的时候,大伙也都在他的微博底下留言了分号,标志着他的结束。
-
printf这一句指令的背后,其实是由许多指令组成的,类似于,小张,你帮我把这个视频精剪一下,好看一点。至于这一句话到底背后具体要做哪些事,只有你自己知道,老板不知道,也不关心。printf就是这样的一个赛博小张,他实际上由很多指令组成。当我们把做同一件事用到的一堆指令放到一起时,这一整块代码就叫一个函数。我们会给这个函数取个名字,比如说printf。就像老板会给精剪视频这个事取个名字,叫小张。
-
函数相关的部分后面还会重新提到,没太理解也没关系。
-
这时候我们就可以忽略掉printf背后的所有细节,简单的只需要知道,把我要打印的数据给printf, printf就会把数据打印并显示出来
-
printf("xxx")这里的这个括号,可以理解为“调用”的意思,调用printf这个函数,等于告诉电脑,“执行”printf这条指令。想让计算机做的所有工作,都是通过调用函数来实现的,调用函数就是在发布指令。
-
这还不够,我们要在文件的最上面加一句
#include <stdio.h>
-
因为printf这个函数不是我们自己写的,他来自标准库,是一帮老登写的,我们需要在这个文件中引用一下标准库,才能使用这个函数。
-
#include
是引用的意思,stdio拆成std和io,std是standard,标准,io是input/output,输入输出的意思,printf就是来自标准输入输出库的一个函数,作用在屏幕上输出一句话。 -
库就是一个工具箱,里面有锤子钳子扳手等等各种功能的函数,我们需要哪个就拿过来用。
-
至于尖括号和.h,引入库的时候都要这样写,暂时记下来就好。
-
我们解释了很多概念,解释这些是方便理解和记忆,不理解的情况下嗯背,一是容易忘很难记得住,二是就把写代码这件事搞得像玩规则怪谈,没头没尾的定义了一堆注意事项。
-
现在运行代码,看看他是否正常打印hello world,没打印就自己看看哪错了,记得不要用中文输入法的符号
-
你可以打印点别的,或者多写两行printf,让计算机多讲几句话。如果你想让他打印的东西另起一行,在某段文本的最后加一个\n就好,这个是换行符的意思。
- 事实上你在写一个word文件的时候,按下回车换行,就是往上添加了一个\n,只不过你看不见,因为他不显示,或者显示为了一个“回车”样子的箭头