C语言入门(1)——C语言概述
1、程序与编程语言
我们使用计算机离不开程序,程序告诉计算机应该如何运行。程序(Program)是一个精确说明如何进行计算的指令序列。这里的计算可以是数学运算,比如通过一些数学公式求解,也可以是符号运算,比如我们使用world编辑一个文档或是通过搜索引擎检索信息。
计算机本质上是由数字电子电路组成的运算机器,所有的运算都只能通过数字来表示和处理。通过将各种数据转换为数字表示,可以使计算机处理各种信息,比如音乐、图片、电影等。
程序由一系列指令组成的,指令就是指挥计算机做某种运算的命令,通常包括以下六类:
输入类指令:用于从键盘、文件或者其它设备获取数据。
输出类指令:用于把数据显示到屏幕,或者存入一个文件,或者发送到其它设备,比如打印机。
基本运算类指令:用于执行最基本的数学运算(加减乘除)和数据存取,其实输入和输出也属于数据存取。
测试和分支类指令:用于判断某个条件是否成立,然后根据不同的结果执行不同的后续指令。
循环类指令:用于重复执行一系列操作。
对于程序来说,有上面这几类指令就足够了。你曾用过的任何一个程序,不管它有多么复杂,都是由上面这几类指令组成的。
编写程序可以说就是这样一个过程:把复杂的任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到最后简单得可以用以上指令来完成。
在不同的编程语言中,指令具有不同的形式。通常“指令”这个词专指机器语言或者汇编语言等低级语言中的指令,而在C语言、C++、Java、Python等高级语言中通常称为语句或表达式。
计算机语言通常分为低级语言和高级语言。计算机所能直接理解的指令是机器语言,它是由一串串由"0"和"1"组成的指令序列组成的。由于机器语言对于人来来说记忆困难,难以理解,人们对它进行了改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,出现了汇编语言。机器语言和汇编语言都十分依赖于机器硬件,这两种语言同属低级语言
由于低级语言比较冗长、复杂、容易出错,而且需要有更多的计算机专业知识,所以又出现了高级语言。高级不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。
常用的高级语言非常丰富,如:C、C++、JAVA、C#、python等。
2、C语言简介
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔实验室的Dennis M. Ritchie于1972年推出,之后C语言先后被移植到大、中、小及微型机上,它即可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,适于编写系统软件、三维、二维图形和动画,具体应用例如单片机以及嵌入式系统开发。
C语言是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。二十世纪八十年代至今的有关程序开发工具,一般都支持符合ANSI C的语法。C语言从诞生到现在先后有了三个标准:ANSI C / C89标准、C99标准和C11标准。
C语言的优点很多,主要有以下几点:
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。[20]
6、生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。[19]
7、可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。[19]
8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
3、C语言如何生成程序
我们编写好的C语言代码是不能直接运行的,需要一系列的步骤将其转换成可以在硬件上运行的程序(可执行代码)。其中最重要的步骤是进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。编译过程需要使用编译器。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。链接过程需要使用链接器。
编译和链接的流程如下:
4、C语言的编译器
C语言的编译器种类繁多,比较常用的有以下几种。
1、GNU/GCC
这是由GNU组织开发的编译器。最初用于Unix系统。目前GCC是Unix/Linux系统的必备编译器。
官网:http://gcc.gnu.org/
2、VC编译器
严格意义上说VC不算编译器,应该是集成了编译器的IDE,是Windows系统开发的首选。当前最新版是VC2013。
官网:http://www.visualstudio.com/
3、Intel C++ Compiler
Intel C++Compiler是美国 Intel 公司开发的 C/C++ 编译器,适用于 Linux、Microsoft Windows 和 Mac OS X 操作系统。该编译器的最新发布是 Intel C++ Compiler 2013 版
官网:http://software.intel.com/en-us/articles/intel-compilers/
4、mingw32/cygwin/Djgpp编译器
这三个都是GNU/GCC的分支。
C语言入门系列主要采用VC2013环境进行讲解,并涉及GCC编译环境。
C语言入门(1)——C语言概述的更多相关文章
- c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...
- 【转】c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码 初级:C语言入门必备 (以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言 ...
- 【R语言入门】R语言中的变量与基本数据类型
说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...
- c语言入门这一篇就够了-学习笔记(一万字)
内容来自慕课网,个人学习笔记.加上了mtianyan标签标记知识点. C语言入门 -> Linux C语言编程基本原理与实践 -> Linux C语言指针与内存 -> Linux C ...
- 编程入门选什么语言好?C 语言还是Python ?为你解析
前面我分享过计算机行业已经成了学校选择排名第一,家长和学生都很看好计算机类专业.现在IT行业也越来越火爆,程序员越来越被人看好.面对相比同龄人高薪资的诱惑,人们很难不心动,即使秃头也值得! 那么问题来 ...
- C语言入门:01.C语言概述
一.计算机和软件常识 1.计算机运行原理 (1)硬件基本组成:硬盘.内存.CPU (2)个部件之间的运作协调(下图)
- C语言入门3-C语言概述及数据类型
一. 计算机程序设计语言 (计算机语言的发展历史) 1. 机器语言 机器语言 二进制代码语言,由 0和1组成的. 特点是:计算机可以直接识别,不需要进行任何的翻译. 2 ...
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- 《JavaScript语言入门教程》记录整理:入门和数据类型
目录 入门篇 js介绍 历史 基本语法 数据类型 概述 null 和 undefined 数值 字符串 对象 函数 数组 本系列基于阮一峰老师的<JavaScrip语言入门教程>或< ...
随机推荐
- putty修改编码
在窗口标题上点击右键,选择 Change Settings... 在打开的配置窗口左边选择 Appearance,在右边点 Font settings 里面的 Change 按钮,选择好中文字体,比如 ...
- android Mvp简单实用
View 对应于Activity,负责View的绘制以及与用户交互Model 依然是业务逻辑和实体模型Presenter 负责完成View于Model间的交互 模拟客户端的登录操作,并实现登录成功与登 ...
- JS基础如何理解对象
这几天跟几个同事聊天发现他们对javascript什么时候该用new都不是很了解. 1.javascript的function什么时候该new什么时候不该new?我觉得主要的问题还是集中在javasc ...
- Web学习
http://book.2cto.com/201309/31936.html http://alvinalexander.com/ 查看锁表进程SQL语句1: select sess.sid, ...
- Java Servlet的配置文件web.xml配置内容和具体含义
文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...
- MATLAB中文论坛帖子整理(GUI)
MATLAB中文论坛帖子整理(GUI) 目 录 1.GUI新手之——教你读懂GUI的M文件... 10 2.GUI程序中改变current directory引起的问题... 15 3.GUI中 ...
- 利用代码改变世界 #AzureDev
毫无疑问,开发人员是 //build/ 2013 的主角.开发人员是我们这个行业的心脏和灵魂,我们很感谢他们所做的一切.在 Satya Nadella 走上讲台发表第 2 天的主题演讲之前,我们播放了 ...
- poj1484---判断保险丝是否烧断
题目输入要求: 2 2 10 //设备数n 接下来的操作数m 保险丝能承受最大电流c5 //电器1的电流7 //2的电流1 //反转开关12 //反转开关2 思路:设置一个flag数组,记得每次 ...
- 成都UBER优步司机第六组奖励政策
保底时段详解 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs. ...
- Struts2五、Struts1与Struts2的区别
Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Ac ...