前言
考研结束后,想着回顾一下大学期间所学的知识。C语言是大学接触的第一门编程语言,回想当时在微机室编写出第一行代码时,心情十分喜悦。大学学习的知识十分浅显,编者想再次学习一次,通过此次的学习编者想理解的更加透彻一些。编者在一些地方可能总结有误,希望大家能够指出,有没有考虑的地方也希望大家能够及时指出。这里感谢各位大佬的阅读。
初识
C语言的起源,这里引用百度百科的一段话,详情请点击该链接。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
何为面向过程
谈起面向过程,不由得便会想起面向对象。那么何为面向过程,何为面向对象呢?请大家继续往下看。
面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向过程就是一步一个脚印的解决问题,这里举一个例子:一般想要参加中考,需经历如下几个步骤(神童等其他情况不包括):
- 小学
1>一年级:学习,考试
2>二年级:学习,考试
3>三年级:学习,考试
4>四年级:学习,考试
5>五年级:学习,考试
6>六年级:学习,考试 - 中学
1>一年级:学习,考试
2>二年级:学习,考试
3>三年级:学习,考试 - 中考
如上所举的例子,面向过程会将所有的步骤都会体现出来。
面向对象就是将一些步骤行为封装为一个对象。还是以中考为例:这里有小学、中学、中考三个对象,各个对象的行为,我们不会去了解,这里执行的步骤便是:
- 小学
- 中学
- 中考
面向过程优缺点:性能比面向对象好,不需要实例化对象。但在扩展性和维护上比面向对象差。
编程机制
一个完整的C程序文件如何去运行,想必大家都想去了解,这里我们简单的说一下C语言代码的编程机制。
这里我们便会有一个疑问:编译器编译后为什么还需要链接器呢?这里编者解释一下,编译器将源代码编译后,只是将源代码转换为中间码,但是该中间码不含有库函数和启动代码(相当于接口),无法形成可执行代码。
容貌
那C语言的源代码应该是什么样的,我们如何编写源代码,各个关键字又有什么含义呢,下边这节由编者带领大家揭开它的面纱,一探它的‘花容月貌’。
小试牛刀
我们以一个简单的例子来开始我们的C语言探索之路。代码如下:
#include <stdio.h>
int main(void){
printf("Hello World!");
return 0;
}
- #include指令和头文件
#include <stdio.h>,相当于把stdio.h的文件内容拷贝到该位置,也可以理解为将stdio.h的功能(函数)放入到我们的源代码中,这样可以直接使用。stdio.h包含输入输出功能正如printf()函数便是stdio.h中的一部分。 - main()
int main(void),int是该函数的返回类型,main是该函数的名字,()用于识别main()是一个函数,void表示输入参数为空。 - 花括号{}
花括号是函数体的结束和开始,将main()函数括起来。 - return
return是函数运行结束后需要返回相应类型的值,这里是int类型的函数,所以返回的是int类型的值(这里int类型指的是正数类型)。 - printf()
printf(“Hello World!”),printf()与main()同为函数,只是main()为主函数,printf()函数运行结束后,便把运行机制交还给main()函数。这里的“Hello World”便是它的参数。
构造
俗话说看美女,就要看她的“构造”了,何为构造呢?首先便是面相,再是曲线,最后便是着装。那么C语言源代码主要由什么构造的呢?我们该如何看呢?这里与看美女类似,首先看函数头(面相),再看函数体(曲线和着装)。
- 函数头:int main(void),包含了函数名,参数和返回类型。
- 函数体:{}花括号内的所有语句和声明等等。
可读性
在学习编程中,都会听到前辈们在抱怨看别人代码的头痛感,这便是程序缺乏可读性。如何让C语言源代码具有很高的可读性呢?这里编者简单的说一下编者在团队开发中所注意的地方:
- 命名原则
开发中,在编写源代码时大家都会遇到命名的麻烦,命名命的好欢天喜地过大年,命名命的差怀疑人生搓键盘。例如在声明变量时,需要声明一个宽度的变量:int width,而不是int ty。后者让人看了不知所云。若变量名过长可加注释来解释说明。 - 每条语句占用一行
编者有时在看他人代码时,会遇到多个语句在一行的情况,让人很暴躁,体验性很差。 - 不同的部分应该分行处理
在编写源代码时,大家会遇到一个函数体中有各种各样的语句和变量,我们应将不同的部分分行隔开。
多函数(化妆品)
为了避免将所有的功能都放在主函数中实现,这里引入了多函数。什么是多函数,多函数便是只有一个主函数,其他函数都为主函数服务。我们可以引用化妆品来解释这一情况:每个人都只有一张脸(主函数),化妆品就相当于其他函数是用来装饰美女的脸。
#include <stdio.h>
void test(void);
int main(void){
printf("main:My name is Lveson. \n");
test();
return 0;
}
void test(void){
printf("test:I come from ShanXi.");
}
小结
该篇主要用于了解C语言,总结有误的地方希望大家能够指正,有缺少的地方也希望大家指出,感觉还行的话请给个赞,给博主一点点鼓励。