首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言入门引言

C语言的发展历程是计算机科学史上的一个重要部分,以下是C语言的主要发展阶段、关键人物、时间点、变化原因及其影响,按照时间顺序整理:

1. 1960年代:B语言的开发

关键人物

:Ken Thompson

时间点

:1969年

变化与原因

Ken Thompson在贝尔实验室开发了B语言,这是C语言的前身。B语言是一种简化的汇编语言,主要用于UNIX操作系统的开发。

B语言的局限性促使开发者寻找一种更强大和灵活的语言。

2. 1972年:C语言的诞生

关键人物

:Dennis Ritchie

时间点

:1972年

变化与原因

Dennis Ritchie在B语言的基础上开发了C语言。C语言结合了汇编语言的高效性和高级语言的可读性,成为一种通用的编程语言。

C语言的设计目标是用于开发UNIX操作系统,提供了直接操作硬件的能力,增强了程序的可移植性。

3. 1978年:C语言的推广

关键人物

:Brian Kernighan和Dennis Ritchie

时间点

:1978年

变化与原因

出版了《The C Programming Language》一书,成为C语言的经典教材。这本书不仅介绍了C语言的语法,还阐述了编程的最佳实践。

该书的出版促进了C语言的普及,使得越来越多的程序员开始学习和使用C语言。

4. 1983年:ANSI C标准化的开始

关键人物

:ANSI(美国国家标准协会)

时间点

:1983年

变化与原因

ANSI成立了一个标准化委员会,开始对C语言进行标准化工作,以消除不同实现之间的差异。

标准化的目的是提高C语言的可移植性,使其在不同平台上的一致性得到保证。

5. 1989年:C89标准

关键人物

:ANSI

时间点

:1989年

变化与原因

ANSI发布了C89标准(也称为ANSI C),这是C语言的第一个正式标准,定义了C语言的语法、语义和库函数。

C89标准化使得C语言在不同平台上的一致性大大提高,促进了C语言的广泛应用。

6. 1990年:C90标准

关键人物

:ISO(国际标准化组织)

时间点

:1990年

变化与原因

ISO采用了C89标准,并将其发布为C90标准。C90标准与C89基本一致,但在国际上得到了更广泛的认可。

C90标准化进一步推动了C语言的国际化,使其成为全球范围内的标准编程语言。

7. 1999年:C99标准

关键人物

:ISO

时间点

:1999年

变化与原因

C99标准引入了许多新特性,如支持变长数组、内联函数、复合字面量和更丰富的数据类型等。

这些新特性增强了C语言的功能,使其更适应现代编程的需求。

8. 2011年:C11标准

关键人物

:ISO

时间点

:2011年

变化与原因

C11标准进一步改进了C语言,增加了对多线程的支持、原子操作、匿名结构和联合等特性。

C11的引入是为了满足现代计算机架构和多核处理的需求,增强了C语言在并发编程中的能力。

9. 2017年:C17标准

关键人物

:ISO

时间点

:2017年

变化与原因

C17标准主要是对C11标准的修订,修复了一些问题和不一致性,但没有引入新的特性。

C17的发布旨在提高标准的稳定性和可靠性,使其更适合长期使用。

10. 2018年:C18标准

关键人物

:ISO

时间点

:2018年

变化与原因

C18实际上是C17的一个小修订版本,主要是对C17标准中的一些错误进行了修正。

C18并没有引入新的特性,因此在实际使用中,C17和C18可以视为相同的标准。

      C语言的发展历程反映了计算机技术的演变和编程需求的变化。从最初的B语言到现代的C18标准,C语言不断适应新的技术环境,加入了许多新特性,保持了其在系统编程和嵌入式开发中的重要地位。关键人物如Dennis Ritchie和Brian Kernighan在C语言的设计和推广中发挥了重要作用,使其成为计算机科学和工程领域的基石之一。

     C语言因其简洁高效的特性至今仍然是最热门的程序设计语言之一。对于初学者,学习C语言,基于一个权威的评价体系可以确保学习更有系统性。全国计算机等级考试二级 C语言程序设计是个不错的选择,可以通过评测机构对学习情况做个检查,也可以借助评测机构的大纲要求进一步完善学习目录。

      例如,2023年的全国计算机等级考试二级 C语言程序设计考试大纲内容如下:

基本要求

1. 熟悉 Visual C++集成开发环境。2. 掌握结构化程序设计的方法,具有良好的程序设计风格。3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4. 在 Visual C++集成环境下,能够编写简单的 C 程序,    并具有基本的纠错和调试程序的能力。  

      考试基于Visual C++环境,在Windows下是一个很好的选择。也具有很强的代表性,有利于入门。从实际工作出发,可以增加学习适用于Linux环境开发的GNU C/C++编译环境。

考试内容

一、C 语言程序的结构1. 程序的构成,main 函数和其他函数。2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。3. 源程序的书写格式。4. C 语言的风格。二、数据类型及其运算1. C 的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。2. C 运算符的种类、运算优先级和结合性。3. 不同类型数据间的转换与运算。4. C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。三、基本语句1. 表达式语句,空语句,复合语句。2. 输入输出函数的调用,正确输入数据并正确设计输出格式。四、选择结构程序设计1. 用 if 语句实现选择结构。2. 用 switch 语句实现多分支选择结构。3. 选择结构的嵌套。五、循环结构程序设计1. for 循环结构。2. while 和 do-while 循环结构。3. continue 语句和 break 语句。4. 循环的嵌套。六、数组的定义和引用1. 一维数组和二维数组的定义、初始化和数组元素的引用。2. 字符串与字符数组。七、函数1. 库函数的正确调用。2. 函数的定义方法。3. 函数的类型和返回值。4. 形式参数与实际参数,参数值的传递。5. 函数的正确调用,嵌套调用,递归调用。6. 局部变量和全局变量。7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。八、编译预处理1. 宏定义和调用(不带参数的宏,带参数的宏)。2. “文件包含”处理。九、指针1. 地址与指针变量的概念,地址运算符与间址运算符。2. 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。3. 用指针作函数参数。4. 返回地址值的函数。5. 指针数组,指向指针的指针。十、结构体(即“结构”)与共同体(即“联合”)1. 用 typedef 说明一个新类型。2. 结构体和共用体类型数据的定义和成员的引用。3. 通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。十一、位运算1. 位运算符的含义和使用。2. 简单的位运算。十二、文件操作只要求缓冲文件系统(即高级磁盘 I / O 系统),对非标准缓冲文件系统(即低级磁盘 I / O 系统)不要求。1. 文件类型指针(FILE 类型指针)。2. 文件的打开与关闭(fopen,fclose)。3. 文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf 函数的应用),文件的定位(rewind,fseek 函数的应用)。

    考试内容可以说很基础,也很全面,如果扎实掌握使用软件开发工作也不是难事。可在学习这些基础知识的时候,加入一些有实际意义的应用开发实践。例如计算一个数学题,做一个生活账本之类的。加入一些内容了解操作系统的并发、内存运用会更贴近实战,例如做一个文件、内存、共享内存的性能对比。

考试方式

上机考试,考试时长 120 分钟,满分 100 分。1 题型及分值单项选择题 40 分(含公共基础知识部分 10 分)。操作题 60 分(包括程序填空题、程序修改题及程序设计题)。2 考试环境操作系统:中文版 Windows 7。 开发环境:Microsoft Visual C++ 2010 学习版。

          考试是实践型的,上级考试,需要熟悉windows操作系统与visual studio编译环境。要求能阅读程序并修改,还要求能根据问题设计程序。可加入Leecode之类的在线编程课,或者结合日常需求的应用,设计简单的程序解决。走通设计、开发、调试、测试验证的几个关键过程。

建议的学习目录

背景

计算机等级考试二级 C语言程序设计

计算机等级考试二级 公共基础

程序设计语言发展历程

C语言发展历程

开发环境

Visual Studio C++

GNU C/C++

快速示例

编辑

编译

链接

调试

运行

发布

预处理

函数

变量

常量

注释

#include

#define

参数

main

printf

scanf

Visual Studio C++

GNU C/C++

常见问题

用Notepad创建源文件

编译、链接和运行

用vim创建源文件

编译、链接和运行

Hello CLang

程序结构介绍

开发过程

C语言基础

变长数组

malloc

free

函数返回指针

进制转换

位运算

十进制 二进制

十进制 十六进制

左移

右移

与或非

异或

打开/创建

读取

写入

关闭

异常

r

w

a

b

fopen

模式

fseek

ftell

rewind

fsetpos

fgetpos

fscanf

fgetc

fgets

fprintf

fputc

fputs

fflush

fclose

ferror

auto

static

extern

函数内静态变量

文件内静态变量

外部文件变量

#include

源文件.c

头文件.h

定义变量

定义函数

#ifndef

#define

#endif

符号常量

函数

复合类型

共享变量

声明

守卫

预处理指令

条件编译

定义类型别名

与#define的差异

基本类型

符合类型

预处理替换代码

编译时解释

带参数宏

宏运算符

f(x,y) x+y

"# 字符串"

"## 组合标识符"

#define

#undef

typedef

#if

#elif

#else

#endif

#ifdef

#ifndef

块 {}

函数

文件

struct

union

enum

指向特定内存的地址

类型

取地址&

取内容*

类型转换

运算

数组与指针

函数指针

"+"

"-"

定义

调用

返回值

参数

递归

数组

复合类型

自动类型转换

实参

形参

类型

定义

初始化

遍历数组

赋值

多维数组

逐个赋值

内存拷贝

条件

循环

选择

if

else

else if

while

for

do-while

break

continue

switch

case

break

表达式

运算符

类型转换

&

|

~

^

||

&&

!

"> >="

"< <="

"== !="

关系运算符

逻辑运算符

位运算符

自动

强制

赋值

printf

scanf

"0"

"-"

"+"

"#"

"l"

"ll"

"h"

"hh"

"c"

"d"

"e E"

"f"

"o"

"u"

" x X"

"s"

"%|-+#0|0-9|.0-9|h hh l ll z|cdeEfosuxX"

标志

最小宽度

精度

长度指示符

转换操作

类型提升

转换规范

转换操作

长度指示符

精度

最小字段宽度

标志

%c <=> char

%s <=> char [] | char *

按第一个参数的转换规则逐个匹配

应该按顺序提供存放位置变量地址

变参

第一个参数指定规则

其余的参数指定位置

转换规则

double <=> %lf

Visual Studio C++的安全提醒

使用公式

匹配规则

输入字符

输入字符串

常量

变量

char

short

int

long

long long

float

double

unsigned

计算机内存中的数据

字面常量

符号常量

命名规则

初始化

赋值

字符常量

字符变量

ASCII码

字符串常量

转义字符

sizeof

正负数

无符号数

二进制

八进制

十六进制

进制

数据类型

输入输出

运算符和表达式

控制流

数组

函数

指针

字符串

字符数组与指针

const

strlen

strcat

strcpy

strcmp

strstr

strtok

strdup

strchr

复合数据

作用域

预处理器

多个源代码文件

存储类别

文件

位操作

内存管理

多线程

通讯

共享内存

动态库

程序设计是一个实践课程,需要持续学习与练习。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Opa9WmqbNRxnJ4-e5TlV8ppA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券