第 1 讲:基本内容
欢迎跟我一起学习 C 语言。我们会列出一些常见的语法特性,以及对应使用场合,以及它们的基本考点。
你先不要着急,看起来下面的内容都偏难,因为它是超纲的知识点,但在本文里,它们不会被讲解得非常难,所以本应该在后续才会提到的这些东西,在这里也只是做个了解,而且你只需要知道这些东西到底是个什么框架就可以了。
语句
C 语言里,以分号结尾的一整段文字叫做一句话。
main
函数
整个程序的代码一般长这样:
main
函数的主要部分。程序一定从 main
函数进入,并从 return 0;
语句退出。即,整个程序的执行流程一定是从第 4 行开始进去,然后从第 9 行执行完毕后退出。期间一句一句执行,从上到下。
建议你把整个代码内容的框架写成上面这样的形式,其中的 May be not exist 的所在行你可以不写。但第 4 行,建议你这么写,有些书上写的是 void main()
、void main(void)
、void main(int argc, char *argv[])
、int main()
,这四种都是不合规矩的写法。原因将在后面阐述。
空行和语义分割
第 7 行叫空行(Null Line),这一行不写东西,仅仅用于分割代码的上下部分,用于分清楚执行逻辑。比如这个程序里,第 7 行前面是用于输出(稍后会解释 printf
函数),第 7 行后面是用于退出程序。所以程序可以尝试通过这样的方式来分割一个大括号里很多语句之间的执行逻辑。
分割语义有多种方式,你还可以通过下面的方式。
标签
我们可以通过牺牲一行代码,写成文字加冒号的方式,来表示一个标签(Label)。这样的标签文字可以达到分割语义的效果,但注意的是,标签的文字只能以数字、字母、下划线 _
三种东西进行组合,且第一个文字不能是数字。比如,Hello world
和 2_Hello
都是命名格式不正确的标签。
用大括号进行语义分割
这样可以达到分割效果。
借用 #pragma region
来作语义分割
这样依旧可以进行语义分割,而且 Visual Studio 还能根据你分割的方式,折叠和展开代码。不过请注意的是,这种分割方式仅用于 Visual Studio,在其它的软件里,无法使用这种方式。
注意,所有上面提到的语义分割所牺牲的代码行都是无意义的,它们都不是真正的执行代码,你可以当成注释一般的存在。
注释
前文我们使用过这个示例:
在第 2 和第 8 行里,以双斜杠 //
形式书写的内容(包含当前行里,符号后面的所有内容)称为注释(Comment),可以写一些任何你觉得想写的东西,不需要是程序才认识的东西。这些文字有助于你看懂代码逻辑。所以这些东西叫注释,就是这个原因。
还有一种注释,可以跨行书写:
/*
和 */
这种是不允许的。程序会被认定,处于第 1 行的 /*
符号一直到第 7 行结束,而非第 8 行。
#include
指令
原代码的第 1、2 行叫做预处理器指令(Preprocessor Command),以井号 #
开头,包含 #pragma
、#include
等众多指令,这里掌握 #include
指令。这个指令表示,将系统自带的操作引入到程序之中,使得后面我们写代码的时候可以使用写好的代码,不用自己去写。这些提供好的代码,都是以 *.h
的文件形式存放,它们叫头文件(Header File),即放在代码头部的文件。其中的 stdio.h 叫做标准输入输出流头文件(Standard Input & Output),简称 std i o。
第 2 行是提供 system
命令(处于代码第 8 行),用于暂停程序。这些程序统称为命令行程序(Command-Line Application),或控制台程序(Console Application),这些程序没有所谓的退出按钮和最小、最大化按钮,它们仅仅被黑色风格的框约束着。黑色风格的框叫做控制台(Console),是只用于输入命令来控制操作系统或程序执行逻辑的代码化窗口。这意味着,这里面只会输入一些奇怪的代码文字,而没有 QQ 这样美丽的界面。
printf
语句
printf
语句是用于把文字显示到控制台上的语句,它可以原封不动把我们书写在 printf
括号里的文字全部显示出来。例如原示例里,最终执行程序会得到的结果是
\n
没有输出,是因为 \n
在双引号里被表示为换行,并非是原本的 \
和 n` 两个符号。所有这样奇特的符号都以 `\
作为开头,系统提供了对应的转换表,在这里我们不多作出说明。另外,写在双引号里的 %%
将表示输出显示一个 %