第1章 初识C语言

第1章 初识C语言

1.1 C语言概述

1.1.1 C语言的发展历史

C语言的原型为ALGOL 60语言(也称A语言)。

1963年 剑桥大学将ALGOL 60语言发展成为GPL语言。

1967年 剑桥大学的Matin Richards简化GPL,产生了BGPL语言。

1970年 美国贝尔实验室的Ken Thompson将GPL语言修改为B语言。

1973年 美国贝尔实验室的Dennis M.Ritchie在B语言的基础上设计出了C语言。

1978年 Brian W.Kernighan和Dennis M.Ritchie出版了名著《The C Programming Language》。

1.1.2 C语言标准

美国国家标准协会(ANSI)组织了由硬件厂商、软件设计师、编译器设计师等成员成立的标准C委员会,建立了通用的C语言标准。第一版C语言标准在1989年颁布,称为C89。从1989年至今,陆续颁布了多个C语言标准。

1.C89(C90)标准

1989年,ANSI通过C89标准,人们习惯称为ANSI C。

1990年,ISO采用C89作为C语言国际标准。

2.C99标准

1999年,ISO和IEC发布了C99标准。C99引入了很多新特性,如变长数组,本书基于C99标准讲解。

3.C11标准

2011年,ISO和IEC发布C11标准 。C11提高了对C++的兼容性,并增加了很多新特性,如多线程。

1.1.3 C语言特点

1.表达能力强

C语言自由简洁,使用简单的方法就能构造出复杂数据类型或者数据结构,具备复杂数据结构运算能力。

2.结构化设计

C语言程序开发思路是自顶向下,模块化编程,各个功能模块之间呈现结构化特点。

3.高效性

C语言可以直接操作内存,执行效率更接近汇编。

4.可移植

C语言编译器兼容性比较强,能够移植到不同设备上,因此C语言程序的移植性也比较强。

1.1.4 C语言应用领域

1.操作系统

C语言可以用于开发操作系统,主要是个人桌面应用领域的Windows系统内核、服务器领域的Linux内核等。

2.应用软件

C语言高效、稳定,因此常用于开发企业数据管理软件,如Oracle、MySQL等。

3.嵌入式

C语言更接近底层的汇编语言,可以进行嵌入式开发,在智能领域方面有着广泛应用。

4.游戏开发

C语言具有强大的图像处理能力、可移植性、高效性等特点,因此常用于大型游戏开发,进行游戏环境渲染、图像处理等。

1.2 C语言开发环境搭建

市面上有许多支持C语言的开发工具,良好的开发环境具有以下功能:方便开发人员编写程序、方便程序调试和运行、提高开发效率。

Visual Studio

目前最流行的C语言开发工具为Visual Studio,它是微软开发的集成环境,工具齐全,支持多种语言。

目前最新版本为Visual Studio 2022。

Visual Studio 2022有3个版本:企业版、专业版、社区版。

社区版免费用于个人和开源项目开发,是教学和初学C语言者的首选。

步骤一:访问Visual Studio官网,下载Visual Studio 2022 Community版本,下载完成后双击安装包,弹出程序组件安装提示框。

步骤二:单击"继续"按钮,下载安装Visual Studio 2022需要的程序组件。

步骤三:下载安装完成之后,会弹出一个界面,让用户选择所需要的开发环境。

步骤四:选择开发需要的工具与环境,由于本教材是将Visual Studio 2022作为C语言开发环境,C++兼容C语言,所以在步骤三中选择"使用C++的桌面开发"选项即可,选择完成之后,单击安装位置后面的"更改..."链接,进入安装路径选择界面。

步骤五:选择Visual Studio 2022的安装路径、下载缓存路径。路径选择完成后,单击"安装"按钮开始安装Visual Studio 2022。

步骤六:安装完成后,打开Visual Studio 2022,首次启动时,Visual Studio 2022会提示登录。

步骤七:可以跳过账号登录,弹出主题设置界面。

步骤八:完成主题设置后,单击"启动Visual Studio"按钮,启动Visual Studio 2022。

1.3 第一个C语言程序

1.3.1 新建项目

1.在Visual Studio 2022启动界面中,单击"创建新项目"选项,弹出创建新项目对话框。

2.选择"控制台应用"选项,然后单击"下一步"按钮,进入配置新项目界面。

3.设置项目名称、选择项目存储路径,并勾选"将项目解决方案和项目放在同一个目录中"选项。配置完成之后,单击"创建"按钮完成项目创建,进入项目管理主界面。

1.3.2 编写程序代码

1.在上一页图中,选中右侧Test项目下的源文件,单击右键,选择"添加"→"新建项"。

2.单击"新建项",系统会弹出添加新项对话框。

3.将文件命名为helloworld.c,单击"添加"按钮,helloworld.c源文件创建成功。双击打开helloworld.c文件,在文件空白区域编写代码。

1.3.3 编译运行程序

单击菜单栏的"调试"→"开始运行(不调试)",运行程序,或单击菜单栏"本地Windows调试器"按钮运行程序。程序运行后,会弹出运行结果的命令行窗口,该窗口会输出程序的运行结果。

1.3.4 代码分析

1.4 C程序编译机制

C语言程序从源代码到可执行代码需要经过预处理、编译、汇编和链接四个步骤。

预处理

  • 展开所有宏,如#define,将宏替换为它定义的值。
  • 处理所有条件编译指令,如#ifdef、#ifndef、#endif。
  • 处理文件包含语句,如#include,将包含的文件直接插入到语句所在处。

编译

  • 删除所有注释。
  • 添加行号和文件标识,以便在调试和编译出错时快速定位到错误所在行。

汇编

将生成的汇编文件*.s翻译成计算机能够执行的指令。称为目标文件或者中间文件。

  • Linux系统:.o文件。
  • Windows系统:.obj文件。

链接

将二进制文件与代码中用到的库文件进行绑定,这个过程称为链接,处理程序各个模块之间的关系,完成地址分配、空间分配、地址绑定等操作,链接操作完成后将生成可执行文件。

动态库与静态库*

链接分为静态库链接和动态库链接。
静态库链接

  • 静态库在Linux中是.a文件,Windows下是.lib文件。

  • 本质上是一组目标文件的集合。

  • 链接过程:将包含该函数功能的库文件全部链接到目标文件中。

  • 开发效率高,但更新难。
    动态库链接

  • 动态库在Linux中是.so文件,Windows下是dll文件。

  • 在程序运行时只对需要的目标文件进行链接。

  • 节省空间且可以共享,隐藏了细节,便于更新。

相关推荐
杨荧25 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
白子寰32 分钟前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT44 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。1 小时前
c++多线程
java·开发语言
小政爱学习!1 小时前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
k09331 小时前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯1 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue1 小时前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧1 小时前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端