目录
1 第一个 C 程序
1.1 需求说明
1.2 开发步骤
1.3 使用终端运行程序
1.4 程序代码分析
2 C 程序运行机制流程
2.1 编写
2.2 预处理
2.3 编译
2.4 汇编
2.5 链接
2.6 运行
2.7 gcc 步骤指令
3 C 程序开发注意事项
4 注释
4.1 什么是注释
4.2 注释的作用
4.3 单行注释
4.4 多行注释
4.5 没有注释的危害
5 printf 输出内容
6 代码块风格
6.1 行尾风格
6.2 次行风格
1 第一个 C 程序
1.1 需求说明
要求开发一个程序,输出 "hello,world!"。
1.2 开发步骤
创建一个新文件夹,注意文件夹名字中不能有中文,所在的路径中也不允许有中文,如下图:
打开 VS Code,单击顶部菜单中的 “文件”,在下拉菜单中点击 “打开文件夹”,找到上一步创建的文件夹:
首次打开文件夹,需要点击 “是,我信任此作者”,如下图:
新建文件 main.c,如下图:
将下面的代码写入 main.c 中。
#include <stdio.h>
int main()
{
printf("Hello World");
return 0;
}
运行代码,如下图:
1.3 使用终端运行程序
如果觉得 vscode 终端窗口中杂乱信息过多,也可以在电脑终端中运行所生成的 main.exe 可执行文件,先在资源管理器中找对文件所在路径:
如果直接鼠标双击生成的 main.exe 可执行文件,窗口会一闪而过,啥也看不见,因为这个程序运行太快了。如果需要看清的话,需要在终端中来运行此程序:
右键文件夹空白区域默认打开的是 powershell ,在 powershell 里面运行程序需要加上路径:
也可以在 cmd 中运行程序,先切换盘符,然后进入文件所在文件夹即路径,最后运行程序:
或者使用绝对路径直接一步到位:
或者在 vscode 中间接访问电脑终端来运行程序:
清除 vscode 终端:输入 clear 并回车,或者点击菜单按钮中的清除终端:
1.4 程序代码分析
2 C 程序运行机制流程
2.1 编写
编写 C 语言源程序代码,并以文件的形式存储到磁盘中,源代码文件以 “.c” 作为扩展名,如本项目中 main.c 文件。
2.2 预处理
在编译之前,预处理器会处理源代码文件,主要进行一些文本上的处理,包括去掉多余的空格和注释,处理预处理指令(后面会学到),生成经过处理的源代码文件,通常带有 .i 扩展名。
2.3 编译
编译器接受预处理后的源代码文件,并将其翻译成汇编代码,生成汇编文件,通常带有 .s 或 .asm 扩展名。
2.4 汇编
汇编器将汇编代码翻译成机器码并生成一个或多个目标文件,目标文件是二进制文件,通常带有 .o(在 Unix-like 系统上)或 .obj(在 Windows 上)。
2.5 链接
链接器将多个目标文件(如果有的话)合并在一起,包括 C 标准库文件和其他库文件,生成最终的可执行的二进制程序(.exe 程序)。
库文件是由系统提供,里面包括内置的标准函数和数据结构集合等,我们代码中使用的 <stdio.h> 就是标准库提供的,里面定义 printf 这个函数。
2.6 运行
执行该 .exe 文件得到程序的运行结果。
2.7 gcc 步骤指令
可以在终端中输入 gcc --help,查看指令帮助:
预处理:gcc -E main.c -o main.i
编译:gcc -S main.i -o main.s
汇编:gcc -c main.s 或 gcc -c main.s -o main.o
链接:gcc main.o 或 gcc main.o -o main
3 C 程序开发注意事项
C 程序源文件以 "c" 为扩展名。
C 程序的执行入口是 main() 函数。
C 语言严格区分大小写。
C 程序由一条条语句构成,每个语句以英文 ";" 结束。
4 注释
4.1 什么是注释
编程语言中,注释是一种特殊的文本,它不会被编译器执行,而仅用于代码的解释和文档说明。
4.2 注释的作用
对代码进行解释说明,帮助其他开发者理解代码的意图、功能和逻辑。
注释掉暂时不想执行的代码,在代码调试中经常用到。
4.3 单行注释
// 这里是注释内容
vscode 中快捷键:ctrl + /
4.4 多行注释
/* 这里是注释内容 */
/*
这里是注释内容
*/
4.5 没有注释的危害
程序中缺乏注释会显著降低代码的可读性和可维护性,阻碍团队协作与知识传承,从而影响软件开发效率和质量。
5 printf 输出内容
使用 printf() 输出内容到终端,要输出的内容需要用双引号包裹,如果需要换行可以使用 “\n”。
#include <stdio.h>
int main()
{
printf("Hello, World!");
printf("\nMusk is learning C\n");
printf("\n锄禾日当午,\n汗滴禾下土,\n谁知盘中餐,\n粒粒皆辛苦");
return 0;
}
运行结果如下所示:
关于 printf() 更多知识点,后面会详细介绍。
6 代码块风格
6.1 行尾风格
int main() {
printf("Hello World");
return 0;
}
6.2 次行风格
int main()
{
printf("Hello World");
return 0;
}