C语言程序的基本结构
一、C语言基础知识的学习方法
1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。
2)学习不要贪快,欲速则不达的道理大家应该明白,学习的重点是培养写程序的感觉。
3)不要记笔记,不要记关键字,不要记函数的参数,忘了就忘了,忘了是因为没有经过实战,所以,到了项目实战课程的时候,忘了内容很自然的会全部想起来。
4)不要用手机看视频,看着看着就想睡觉,学习的过程是边看边写,没有看出来的程序员。赵括,知道不?就是那个空读兵书不成器的家伙,只看书看视频不写程序,和赵括没什么不同。
5)程序员的指法很重要,翘着二郎腿,嘴里叨着烟,挥舞一指禅,一副吊儿郎当的样子,是成不了程序员的。
6)学习的过程中遇到的问题,如果三十分钟解决不了,不要纠缠,在群里向大家请教。但是,反对遇到问题不经思考就提问的方式。
7)开始学习C语言之前,必须先熟悉Linux环境,掌握Linux常用命令和vi的基本用法。
8)高手都是从菜鸟开始的,只要您按视频教程一步一个脚印的学习,一定能成为优秀的程序员。
二、C语言程序开发的流程
现阶段,我们编写的C程序比较简单,程序开发的流程如下:
三、安装C语言的编译器
Linux下C语言的编译器是gcc,以root用户登录,执行以下命令安装它:
1 | yum -y install gcc |
注意,如果您的服务器没有安装gcc,以上命令就会安装最新版本的gcc,如果已经安装了gcc,就会更新到最新版本,所以,以上命令不管执行多少次都没有问题。
安装gcc的前提条件是服务器必须可以访问互联网。
四、C程序的基本结构
C 程序主要包括以下部分:
1)注释(说明文字)
2)预处理指令
3)主函数入口
4)主函数体
示例(book1.c)
1 | /* |
接下来我们讲解一下上面这段程序。
1、程序的注释
1 | /* |
以上是C程序的注释(说明文字),注释的目的是为了提高程序的可读性,是给程序员看的,不是给计算机看的,编译器编译程序时将忽略它。
/* */用于注释多行文字,/*是开始,*/是结束。
// 用于注释一行文字,可以独占一行,也可以放在代码的后面。
2、预处理指令
1 |
这一行是(编译)预处理指令,告诉 C
语言编译器在编译之前要包含stdio.h文件,程序中使用了printf函数,如果不包含它的头文件,编译时会出现警告或报错。
3、主函数的入口
1 | int main() |
main是主函数,程序从这里开始执行。在同一程序中,main函数只能有一个。
4、主函数体
1 | printf("我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。\n"); |
主函数体的代码在一对花括号,本程序的主函数体有两行代码。
第一行代码调用了printf函数,printf函数的功能是把内容输出到屏幕,这里是输出一行文字,文字结尾的\n表示换行,多个\n就可以输出多个换行。
第二行代码return 0;表示主函数返回,程序退出。
注意,main函数体中的空行和每行代码前面的空格是为了提高程序的可读性,对程序的功能没有任何影响。
五、编译并执行 C 程序
在Linux的命令行下用gcc命令编译源程序book1.c。
1 | gcc -o book1 book1.c |
编译完成后,将生成目标程序book1(可执行程序名由-o参数指定),加./执行它。
1 | ./book1 |
执行的结果是在屏幕上输出一行文字。
1 | 我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。 |
运行效果
六、知识总结
/**/ 多行注释。
// 单行注释。
#include 包含其它文件的预处理指令。
main 程序执行的起点。
{} 函数体、语句块的开始和结束。
() 函数的参数放在括号中。
“” 字符串放在双引号中。
\n 换行符。
; 分号,一行代码的结束。
1)以上都是C语言的语法约定,是规则,不可改变,不能质疑,必须遵守;
2)C语言严格区分大小写;
3)中文的全角标点符号C语言无法识别,编译时会报错;
4)C程序以分号“; ”表示一条语言的结束,多条语句可以书写在一行。
5)如果某行代码只有分号“; ”,表示一条空语句,什么也不做。
七、课后作业
1)请写一个最简单的C程序,实现什么功能无所谓,代码越少越好。
2)有一个坑,中国程序经常掉进去,但美国程序却不会,请问这是个什么坑?
3)在屏幕中输出诗经《我是一只傻傻鸟》,源程序命名为book2.c,执行的效果如下:
4)请在屏幕中间用符号“*”拼出一个大大的字母H,源程序命名为book3.c,执行的效果如下:
八、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道