1. 代码分析
打开工程中的main.c文件(C程序源文件扩展名为.c)。 可以发现它是第一个C程序中唯一的源文件。 代码如下:
1.#
◐#是C语言中的预处理指令之一。 所谓预处理就是在编译之前所做的处理。 预处理指令一般以#开头
◐ # 该指令后面会跟一个文件名。 预处理器找到#指令后,会根据文件名查找该文件,并将该文件的内容包含到当前文件中。包含文件中的文本将替换源文件中的#指令,就好像您将包含文件的全部内容复制到 # 指令的位置。
◐ 如果包含文件的扩展名是.h,我们称其为“头文件”(File)。 头文件可以用来声明函数(“函数”就是面向对象中的“方法”)。 如果要使用这些函数,必须首先使用#指令包含该函数所在的头文件
◐ # 指令不限于.h头文件,而是可以包含编译器识别的任何C/C++代码文件,包括.c、.hpp、.cpp等,甚至.txt、.abc等。
◐ 也就是说,你可以将第3行到第9行的代码放入其他文件中,然后用#指令包含它,例如:
1> 将第3行到第9行的代码放入my.txt
2> 在main.c源文件中包含my.txt文件
程序仍然可以照常运行,因为#的作用是将文件内容完整复制到#命令所在的位置。
但您可能想知道,为什么 stdio.h 使用尖括号而 my.txt 使用双引号“”? 这是一个很好的区别。 如果是系统自带的文件,最好使用; 如果是开发者创建的文件,最好使用“”
注意:这里使用的txt文件纯粹用于演示。 我做项目的时候一般不会这么做。 我会把所有的代码都写进txt里,除非我吃饱撑不住了。
2.主要功能
☀ 如前所述,C 中的函数是面向对象中的“方法”。 C语言是一种面向过程的语言。 它是一种以流程为中心的编程思想。 意思是先分析解决问题所需的步骤,然后用函数一步步实现这些步骤。 使用时只需一一调用函数即可。 知道了
☀ C 程序中必须有一个主函数,并且只能有一个主函数。 main函数是整个C程序的入口点。 main.c 中的第三行代码定义了一个 main 函数。
☀ main函数的返回值为int类型,接收2个参数。 其实不需要写参数。
main 函数可以简化为:
这里需要注意的是:这里的main函数没有写返回值类型,并不是说该函数没有返回值,而是说返回值类型是int类型,而void则表示该函数没有返回值价值。
由于C语言的语法限制并不严格,我们可以进一步简化main函数:
虽然它要求main函数返回一个int类型的值,但是我们不能返回
3.stdio.h
◐ stdio.h是C语言函数库中的头文件,定义了一些标准输入输出函数。 在 main.c 的第一行代码中,stdio.h 文件包含在 # 指令中。
◐ 这里之所以包含stdio.h文件,是因为第7行使用了stdio.h内部声明的函数。该函数可以将数据输出到标准输出设备(例如显示器屏幕)。 屏幕上输出的文字是 by of code ("Hello, World!n");,双引号“”内的文字是C语言的字符串
2. 开发和运行C程序的步骤
步骤如下:
1.编写程序
C语言源文件的扩展名为“.c”。 源文件以ASCII码的形式存储,不能被计算机直接执行,因为计算机只能识别二进制指令,即0和1。
2.编译(VC环境下)
✎ 将C源程序翻译成计算机可以识别的二进制形式的目标代码文件。 这个过程称为编译,由C编译器完成。
✎ 编译时,还会检查源程序的语法。 如果出现语法错误,编译就会失败。 如果编译成功,就会生成目标文件。 目标文件名与源程序文件名相同,扩展名为“.obj”。 例如,编译mj.c生成目标文件mj.obj
✎ 每个源文件都是单独编译的。 如果一个工程中有多个.c源文件,编译成功后会生成多个对应的.obj目标。一般情况下,目标文件是相关的。 例如,a.obj可能调用b.obj中定义的函数,因此它们不能由计算机单独执行,并且目标文件不包含运行程序所需的函数。 库函数等
3.链接(VC环境下)
✎ 将所有关联的obj目标文件和系统提供的C库函数组合起来生成可执行文件的过程称为“链接”
✎ 链接生成的可执行文件的文件名与源程序文件同名,扩展名为“.exe”,计算机可以直接执行
4. 跑步
* 在环境中直接双击“.exe”文件即可运行C语言程序
* 双击用终端(命令行)打开:
三、总结
说了这么多,我们来总结一下第一个C程序的运行步骤:
1、编译前执行#指令,将stdio.h的内容复制到源程序中。
2.编译源程序并生成目标文件
3.链接C语言函数库并生成可执行文件
4、运行可执行文件,输出“Hello, World!” 屏幕上。
“我是一名从事开发10年的老年程序员,即将退休。最近花了一些时间整理了一份学习C语言和C++的完整路线,项目源码和工具。供那些想要学习C语言和C++的人参考。”学习C/C++ 对于年轻朋友来说,学习氛围和志同道合的伙伴非常重要,笔者推荐一个C语言/C++编程爱好者的聚集地>>>ef="">C/C++编程技术学习交流聚集地,还有资料注释和项目源码!
欢迎初学者和高级朋友。 希望你也能通过自己的努力成为下一个优秀的程序员。 有需要、有兴趣、或者需要学习C/C++进入或转行的小伙伴可以一起学习! ”
如果喜欢小编,请动动小手指关注我吧!