C语言教程一:初识C语言(千字总结)

1、C语言的起源

1972年,贝尔实验室的丹尼斯·里奇肯·汤普森在开发UNIX操作系统时设计了C语言。C语言不是突发奇想而来的,而是在B语言的基础上进行设计的。(至于B语言的起源,那就是另外一个故事了,哈哈哈哈)

C语言的设计初衷是将其作为程序员使用的一种编程工具,因此,其主要作用是成为有用的语言

读到这里的小伙伴一定有个疑问,为什么编程语言的主要作用是有用的呢?难不成还有别的语言是没用的?

其实这里所说的有用指的是实用。虽然绝大多数语言都是以实用为目标,但是通常要也会考虑其他的方面。

1、Pascal 的主要目标是为了更好地学习编程原理提供扎实的基础;
2、BASIC 的主要目标是开发出类似英文的语言,让不熟悉计算机的学生轻松学习编程;

这两个点确实是很重要的,但是最初为程序员设计开发的C语言,现在已成为首选的编程语言之一

2、选择C语言的理由

即使你从来都没有接触过C语言,甚至从来都没有接触过编程,那你也多少听过,C语言已经成为最重要、最流行的编程语言之一。

C语言的成功要归功于使用它的人都对它很满意。特别是在学习的C语言的过程中,你会发现它的许多优点。

下面是一些C语言特点,可能总结的不够完善,了解的小伙伴可以在评论区提出来,我将会感激不尽的哦。

2.1、设计特性

C语言的设计理念是让用户能轻松地完成自顶向下地规划、结构化编程和模块化设计
因此,用C语言编写地程序更易懂、更可靠

2.2、高效性

在设计上,它充分利用了当前计算机的优势,因此C语言相对更紧凑,而运行速度更快
在实际上,C语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序以获得最大运行速度或最有效的使用内存

2.3、可移植性

在一种系统编写的C程序稍作修改或不修改就能在其他系统运行
(如果需要修改,也只需简单修改主程序程序头文件的少许项即可)

2.4、强大而灵活

功能强大且灵活的UNIX操作系统大部分是用C语言编写的
其他语言的许多编译器和解释器都是用C语言编写的(如,FORTRAN、Perl、Pyhon、LISP)

2.5、面向程序员

程序员可以用C语言访问硬件、操作内存中的位
程序员可以用C语言丰富的运算符简洁地表达自己的意图
许多任务用C语言来处理都非常简洁
C语言的编写没有那么严格,充满灵活性

2.6、缺点

C语言的自由性灵活性编程虽然充满了乐趣,但是这个特点也给C语言带来了缺点。
程序员在享用粗语言自由编程的乐趣的同时也得承担更多的责任

特别是,C语言使用指针,而设计指针的编程错误往往难以察觉

3、C语言的应用范围

早在20世纪80年代,C语言就已经成为小型计算机(UNIX)使用的主流语言

从那以后,C语言的应用范围扩展到微型机(个人计算机)大型机(庞然大物)
因为C程序修改很方便,而且一直到新型号的计算机中也没有什么问题
所以许多软件公司都用C语言来开发文字处理程序电子表格编译器和其他产品。

20世纪90年代,许多软件公司开始改用C++ 来开发大型的编程项目。
C++几乎是C的超集,C++在C语言的基础上嫁接了面对对象编程工具,这意味着一个C程序就差不多就是一个C++程序。

C语言已经成为嵌入系统编程的流行语言。
越来越多的汽车、照相机、DVD播放机和其他现代化设备的微处理器都用C语言进行编程。
作为开发操作系统的卓越语言,C在Linux开发中扮演着极其重要的角色。

思维导图

4、计算机能做什么

在学习如何用C语言编程之前,最好先了解以下计算机的工作原理。这些知识有助于你理解C语言编写程序和运行C程序时所发生的事情之间有什么联系。

4.1、计算机的部件构成

中央处理单元(CPU)承担绝大部分的运算工作
随机存取内存(RAM)是存储程序和文件的工作区
永久内存存储设备(过去一般指机械硬盘,现在还包括固态硬盘)即使在关闭计算机之后,也不会求使之前存储的程序和文件。
外围设备(如,键盘、鼠标、触摸屏、监视器)提供人与计算机之间的交互。

4.2、CPU的工作

CPU从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令,诸如此类。

为什么计算机能这么快的处理那些枯燥的工作呢?

1GHz的CPU一秒钟能重复上述这样的操作大约十亿次(我相信你一定像我一样惊讶于计算机强大的算力)

CPU有自己的小工作区。 工作区由若干个寄存器组成,每个寄存器都可以存储一个数字。一个寄存器存储下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令。

在获取指令后,CPU在另一个寄存器中存储该指令,并更新第1个寄存器存储下一条指令。

值得注意的是,CPU能理解的指令有限,这些指令相当具体,其中许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。

4.3、两个有趣的知识

知识一

存储在计算机中所有的内容都是数字
计算机以数字形式存储数字和字符(在文本文档中使用的字母就是字符) 每个字符都有一个数字码
计算机载入寄存器的指令也以数字形式存储,指令集中的每条指令都有一个数字码

知识二

计算机程序最终必须以数字指令码(即,机械语言)来表示

4.4、小结

简而言之,计算机的工作原理是:如果希望计算机做某些事,就必须为其提供特殊的指令列表程序),确切地告诉计算机要做的事以及如何做。你必须用计算机能直接明白的语言(机械语言)创建程序。

这当然是一个很令人头疼的问题,不过不需要担心,下面我们就来解决这个问题。

5、高级计算机语言和编译器

高级计算机语言以多种方式简化了编程工作

1、不必用数字码表示指令
2、使用的指令更贴近你如何想这个问题
3、可以在更抽象的层面表达你的想法

编译器的作用

编译器是把高级语言程序翻译成计算机能理解的机器语言指令的程序

程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作。

编译器的优势

使用合适的编译器或编译器集,可以把一种高级语言转换成供各种不同类型CPU使用的机器语言程序

简而言之,高级语言(如C、java)以更抽象的方式描述行为,不受限于特定CPU或指令集。而且,高级语言简单易学,用高级语言编程比用机器语言容易得多。

6、语言标准

1978年,The C Programming Language(《C语言程序设计》)第1版式公认的C标准,通常称之为K&R C经典 C特别是,该书的附录中的“C语言参考手册”已成为实现C的指导标准。

6.1、第1个ANSI/ISO C标准

美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1983年正式公布。

国际标准化组织于1990年采用了这套C标准(ISO C)。

ISO C和ANSI C是完全相同的标准。

ANSI/ISO标准的最终版本通常叫做C89C90

该标准定义了C语言和C标准库。

在该标准中,最有趣的可能是:保持 C 的精神

1、信任程序员
2、不要妨碍程序员做需要做的事
3、保持语言精炼简单
4、只提供一种方法执行一项操作
5、让程序运行更快,即使不能保证其可移植性

在最后一点上,标准委员会的用意是:

作为实现,应该针对目标计算机来定义最合适的某特定操作,而不是强加一个抽象、统一的定义。

6.2、C99标准

1994年,ANSI/ISO 联合委员会(C9X 委员会)开始修订C标准,最终发布了C99标准。

C99标准有三个主要修订目标:

国际化

支持国际化编程。例如,提供多种方法处理国际字符集。

弥补缺陷

“调整现有实践致力于解决明显的缺陷”。因此,在遇到需要将C移至64位处理器时,委员会根据现实生活中处理问题的经验来添加标准。

提高计算的实用性

为适应科学和工程项目中关键值的计算,提高C的实用性。

C99的修订保留了C语言的精髓,C仍是一门简洁高效的语言

值得一提的是,供应商并未像对C90那样很好地接受和支持C99,所以并非所有地编译器都能完全实现C99地所有改动。

6.3、C11标准

标准委员会在2011年发布了C11标准

处于对当前编程安全的担忧,不那么强调“信任程序员” 目标了。

C99的一些特性在C11中成为了可选项。

7、使用C语言的7个步骤

这里所说的7个步骤值得是理想状态,在实际使用过程中,尤其是在较大的项目中,可能要做一些重复的工作,根据下一个步骤的情况来调整或改进上一个步骤。

7.1、第一步:定义程序目标

在动手写程序之前,要想明白你想让程序做什么,思考你的程序需要那些信息,要竞选那些计算和控制,以及程序应该要报告什么信息。

这一步骤,不涉及具体的计算机语言,应该用一般术语来描述问题。

7.2、第二步:设计程序

思考如何用程序完成任务。

决定在程序中如何表示数据,以及用什么方法处理数据。

通常,选择一个合适的方法表示信息可以更容易地设计程序和处理数据。

7.3、第三步:编写代码

编写代码就是把你设计的程序翻译成C语言。

一般而言,使用文本编译器创建源代码文件

该文件中内容就是你翻译的C语言代码。

下面是一个C语言源代码示例:

#include <stdio.h>
int main(void)
{
    int dogs;

    printf("你有多少只狗?\n");
    scanf("%d", &dogs);
    printf("所以你有%d只狗!\n", dogs);
    
    return 0;
}

如果你现在看不懂这些代码的含义,没有关系,后面的文章会介绍这些代码的作用。

7.4、第四步:编译

编译的过程是:

C编译器把C代码翻译成机器语言
C编译器将源代码与C库的代码合并成最终的程序
编译器检查C语言程序是否有效
生成一个用户可以运行的可执行文件

7.5、第五步:运行程序

编译中生成的程序可通过单及或双击文件名或图标直接在操作系统中运行。

7.6、第六步:测试和调试程序

程序中的错误在计算机行话中叫做bug

查找并修复程序错误的过程叫做调试

随着你越来越老练,你所写的程序中的错误也会越来越不易察觉。

不必过分担心,现在的编译器会捕获许多错误。

7.7、第七步:维护和修改代码

创建完程序之后,你发现程序有错,或者像扩展程序的用途,这时候就要修改程序

7.8、说明

编程并非像描述那样是一个线性的过程。有时,要在不同步骤之间往复。

磨刀不误砍柴工,应该演出个好难过先规划在动手编写代码的好习惯,用纸和笔记录下程序的目标和设计框架。这样在编写代码的过程中会更加得心应手、条理清晰。

好的,介绍初始C语言的章节就到此结束了,下一章开始我带各位进行基础知识的学习。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值