目录
一.什么是C语言
1.面向对象:
2.面向过程:
二.C语言特点
三.C语言开发时间
四.环境搭建
1.代码编辑器
2.C编译器
五.C语言标准
六.计算机补充知识
1.计算机构成
2.CPU工作
3.编译器
七.编写程序步骤
八.源文件,目标文件,可执行文件
一.什么是C语言
C语言和python,java这类语言一样都是高级语言。或许你听过C++语言,其实C++语言和其他非常多语言(python,perl,fortran…)一样都是基于C语言开发出来的。但C++和C在很多方面都有很多共同之处,唯一一个很大的区别就在于C++是一门面向对象编程(对语言建模来适应问题),而C是面向过程的编程为中心的编程。这里重点介绍下面向对象编程和面向过程编程
1.面向对象:
1.编程思维:
分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次
调用
2.生活思维:
早上上学,我们要经历“起床”,“刷牙”,“吃早饭”…“坐车到学校”这些事件(函数)就可以理解为了完成早上上学这个任务所需要经过的过程
2.面向过程:
1.编程思维:
把构成问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
2.生活思维:
早上上学,我们的关注点不在是起床”,“刷牙”,“吃早饭”…“坐车到学校”这些事件,而是构建起这些事件的你的针对这些事情的状态,行为等等
二.C语言特点
时C语言相较于其他语言拥有非常高的高效性,灵活性和可移植性,比如,C语言具有汇编语言才具有的微调控制能力。以及高移植性,这点我们在后面学习到位操作的时候会有很深的感受
而C语言的设计特性则为:自顶向下的规划,机构化编程,模块化设计
三.C语言开发时间
C语言开发时间为1972年,由贝尔实验室的丹尼尔.里奇和肯.汤普逊(B语言开发者,B语言其实就是C语言的“父辈”)发明
四.环境搭建
1.代码编辑器
因为C语言与UNIX关系密切,在加上Linux和UNIX关系又密切,所以在使用Linux使用C语言编程,一般不需要专门在配置,直接使用 gcc 需要编译的文件 就可以了
而在windows当中使用C语言搭配环境则是十分麻烦,一般我个人比较推荐使用visual Studio,而VS Code 环境搭建我把别的大佬教程链接放这了,大家跟着做就好了,如果还有问题可以私信我
visual studio配置学习教程
记住不是左边蓝色那个,蓝色那个是visual Studio code(简称VS code),右边那个紫色的才是visual Studio。大家下载的时候自己注意一点。
两个的应用交会有很多,但还是有各自的侧重面,大家可以根据自己的情况选择使用
比较大的区别可能就在于
VS Code主要是写前端代码的工具,visual Studio主要是写后端代码的工具
跨平台能力不一样,VS Code是可以跨平台编译的
VS Code使用起来比较简单,所以这也就导致其功能没visual Studio完善
2.C编译器
这里重点介绍下GUN编译器。GUN项目始于1987年,是一个开发大量自由UNIX软件的季候。GUN编译器集合也称GCC。GCC有各种版本来适应不同的硬件平台和操作系统,包括UNIX,Linux和windows。用gcc命令便可调用GCC C编译器。许多使用gcc的系统也爱用cc作为gcc的别名(LINUX使用是GUN提供的GCC公用域C编译器)
在运行可执行文件时候也可以选择使用不同C标准
gcc -std=c99 a.out
gcc -std=c1x a.out #这里调用GCC接受C11之前的草案标准
gcc -std=c11 a.out
而在windows当中需要自己去下载C编译器,一般常用的就是Cgwin和MinGW,大家在配置windows环境时一般用的还是MinGW多点。使用VS Code的时候需要下载MinGW,配置环境的过程会比较麻烦,可自行去尝试,visual studin会好很多,系统会根据你的开发需求,直接下好相应软件帮助你把环境配置好,所以动手能力不太好的朋友,建议还是直接用visual studin会比较好
而目前我在windows上面用的 vs code 和 visual studin属于IDE(windows下的集成开发环境),它包含了很多语言的编译器
五.C语言标准
ANSI C:于1989年ANSI(美国国家标准协会)委员会X3J11发布,该标准与1990年被国际标准化组织采用,命名为ISO C(注意ANSI C和ISO C 是两个完全相同的标准)ANSI C也名C89(因为ANSI C 于 1989年公布)或C90(因为ISO C 于1990公布)
C99,C11:后期ANSI/ISO联合委员会(C9X委员会)也与1994年发布C99标准和的C11标准 而还有K&RC标准,K&RC 和 ANSI C的标准各有不同,现在用的比较多的还是ANSI C。相同的程序,不同的标准,最终的效果可能都是不一样的。
六.计算机补充知识
1.计算机构成
中央处理单元(CPU):承担绝大部分的运算工作(主要由运算器(ALU)和控制器(CU)两大部分组成)
随机存储内存(RAM):存储程序和文件的工作区
永久内存存储设备:存储文件,即使关闭计算机后,也不会丢失之前存储的程序和文件(一般主要有机械硬盘,固态硬盘)
外围设备:键盘,鼠标,显示屏等
而现在一般还有一个GPU(图像处理器),主要是负责图像的处理
2.CPU工作
CPU有一个自己的小工作区--由若干个寄存器组成,每个寄存器都可以存储一个数字(存储着下一条指令的内存地址),CPU使用该地址来获取和更新下一条指令。在获取指令后,CPU在另一个寄存器中存储该指令,并更新第一个寄存器存储下一条指令的地址
存储在计算机中的所有内容都是数字,计算机以数字形式存储数字和字符。计算机程序最终必须以数字指令码(机器语言)来表示。一般在计算机编程当中你最常会听到三种编程语言的统称,机器语言,汇编语言,高级语言。
机器语言:这个可以理解为计算机能理解的语言,只有1和0
汇编语言:也叫符号语言或低级语言,这是一个非常难学习但也非常厉害的语言,汇编语言一般用于直接与电脑硬件操作,有兴趣的同学可以自行了解
高级语言:就是像C,C++,python…等等,因为方便学习所以现在主流的编程语言都是高级语言,高级语言计算机是看不懂的,所以需要编译器将高级语言翻译成机器语言给电脑看
3.编译器
编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序
编译器的出现让程序员在编写C语言时可以更好的进行高级思维活动,而编译器则负责处理
七.编写程序步骤
第一步:程序目标
这个就很简单了就是要明白自己要做什么,同时思考设计这样的程序应该如何去做
第二步:设计程序
这里的设计一般还是让你用语言去描述设计思路,并不是直接就上手去打了
比如我们要把输入的数据打印到屏幕,用伪代码方式表达
scanf()函数接受我们输入的数据并存入到相应的变量当中
printf()函数将变量存储的数据打印到屏幕
第三步:编写代码
这一步就是实实在在编写C语言的代码了
第四步:编译
这一步并不用你来做,用编译器将源代码装换成可执行代码。
详细来说就是由编译器先将源代码文件转化为目标代码(此时源代码转换为机器语言代码),目标文件后缀为.obj,此时目标文件还需要通过链接器将目标文件的库代码引入,以及加入对应的启动代码,最终变为可执行代码,后缀为.exe。编译时候.obj的目标文件你一般看不见,因为系统生产可执行文件后会自动删除
这一块你稍微了解一下,随着学习深入你会慢慢明白的
第五步:运行程序
在图像界面的就按照对应软件的启动运行就好了,像linux这种命令行界面 gcc 可执行文件名 先编译在./可执行文件名就好了。windows终端 .\可执行文件名 也可以正常运行,一般LINUX编译完的可执行文件名为a.out,后面编译的文件会覆盖a.out的内容
第六步:调试程序
这里也就是找语法和语义上面的bug了
第七步:维护和修改代码
这个如果你以后进入公司,这一块也会成为你工作的一部分,现在嘛,写好的代码保存好,以后慢慢欣赏
八.源文件,目标文件,可执行文件
在讨论这些文件之前,我们必须了解一点,hello.c
.之前的hello叫基本名 .之后的c叫做扩展名
而一般C文件源文件扩展名为c。目标文件为obj(也可能是其他扩展名,不固定)。可执行文件为exe(这个大家应该都比较熟悉了,因为我们一般用的软件都是exe后缀的)
一般在编译的时候,源代码文件将转换为可执行文件,而整个执行过程包含编译和链接这两个过程。
首先,编译器把源代码转换成目标文件,然后链接器将目标文件和库代码(定义类似printf,scanf这类函数的头文件)和启动代码(启动代码就是程序和操作系统之间的接口)进行合并,最后变为可执行文件。
这里需要知道一点,源代码文件(c为后缀)其实是文本文件,不是字处理器文件(包含一些文字的字体和格式信息,一般以.txt为后缀)。大家才存储的时候记得一定要以.c为后缀。
这里还需要特别说下,unix和linux当中编译后的目标文件均为a.out,直接在当前文件夹输入文件名即可运行,如果想要保存这个目标文件,需要进行改名,不然下一次运行gcc编译后,会把这个目标文件进行覆盖。
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈