跳转至

简介

概览

什么是C/C++

  • C是一种面向过程的、强调结构化编程的、高效的、偏向底层操作的、通用的编程语言,支持面向过程编程。
  • C被认为是一种中级语言,它综合了高级语言和低级语言的特点。
  • C是由Dennis Ritchie于1972年在贝尔实验室为开发UNIX操作系统而设计的。C最开始是于1972年在DEC PDP-11计算机上被首次实现。
  • C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持面向过程编程、面向对象编程和泛型编程。
  • C++被认为是一种中级语言,它综合了高级语言和低级语言的特点。
  • C++是由Bjarne Stroustrup 于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++进一步扩充和完善了C语言,最初命名为带类的C,后来在1983年更名为C++。
  • C++是C的一个超集,事实上,任何合法的C程序都是合法的C++程序。

C/C++的特点

  • 强调结构化编程,能够处理底层的活动,且能在多种计算机平台上编译,因此由C产生的程序也是高效精简的。
  • 强大的多平台支持:C代码在Mac、UNIX、Windows计算机上都能通过编译,甚至在Android、iOS都有提供编译的程序。
  • C++完全支持面向对象设计,包括面向对象开发的四大特性:封装、继承、多态、抽象。
  • 标准的C++由三个重要部分组成:核心语言、标准库、STL(标准模板库)
  • 强大的多平台支持:C++代码在Mac、UNIX、Windows计算机上都能通过编译,甚至在Android、iOS都有提供编译的程序。

C/C++的使用

  • C语言最初是用于系统开发工作,特别是组成操作系统的程序。由于C语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用C语言作为系统开发语言。
  • C语言更多地应用在偏向系统的开发,例如OS(操作系统)、或是SQL、Nginx等系统应用。
  • C++语言广泛使用在游戏开发、嵌入式系统开发、金融领域、图形图像处理、科学计算和数值分析。

学习C/C++

  • C/C++是一种学习周期长,难度较大,体系完善的高级语言,对于没有任何基础的初学者来说,是困难的。
  • C/C++的学习如同其它程序语言一样,一定要动手实践,“光说不做假把式”。
  • 如果你真的想把C/C++学好,绝不能浅尝辄止,要对其体系、逻辑有深层的理解。

环境安装

简单来说,如果想要在计算机上运行C/C++代码,只需要两样东西:

  • 文本编辑器:用于编写C/C++代码
  • C/C++编译器:将C/C++源代码编译成可执行程序

但是为了实现更丰富的功能和方便运行、调试等,或者你需要快速上手,可以使用集成环境,即集成编辑、运行、调试等一体的环境。

集成环境

  • Visual Studio: 面向.NET和C++开发人员的综合性Windows版IDE,可用于构建Web、云、桌面、移动应用、服务和游戏。
  • Visual Studio Code:一个通用的文本编辑器,但它有很多插件支持C/C++开发,使其成为一个流行的选择,通过安装C/C++插件和调整设置,你可以使其成为一个很好的C语言开发环境。
  • Dev-C++:一款免费的、自由软件的 C/C++ 集成开发环境(IDE),支持单文件和多文件开发,可对代码格式化和调试。

说明

很多高校都是以Dev-C++为开发环境进行教学的,而且诸多比赛也使用该环境,但是作者个人认为,Dev-C++虽然方便、轻量、易用,但绝非长远的打算。而且,许多企业、公司都不使用Dev-C++。由于集成环境操作简单,这里不会对使用集成环境的操作进行说明,可以根据IDE的指引进行操作,或自行上网查询。

GNU C/C++编译器

说明

如果你是初学者或想要快速上手C/C++,请跳过这部分内容。

Windows安装

为了在Windows上安装GCC,您需要安装MinGW。请访问MinGW下载最新版本的MinGW安装程序。

如果你的无法访问,可以使用国内镜像,可以点击这里,下载作者准备的文件。

将压缩包解压并将bin目录添加到环境变量中:例如,我解压到D:/MinGW中。bin文件夹所在的目录为D:\MinGW\x86_64-13.2.0-release-win32-seh-msvcrt-rt_v11-rev1\bin。

按下 Win+R 打开运行对话框,输入sysdm.cpl回车进入系统属性窗口,选择高级>>环境变量,添加PATH变量:你的bin文件夹目录。添加完成后,点击确定关闭窗口。

按下 Win+R 打开运行对话框,输入cmd进入命令行窗口,输入gcc --version回车便可看到版本信息,如果提示不存在该命令,说明添加环境变量失败。

Mac OS安装

如果您使用的是Mac OS X,最快捷的获取GCC的方法是从苹果的网站上下载Xcode开发环境,并按照安装说明进行安装。一旦安装上Xcode,您就能使用GNU编译器。

Linux安装

Linux的版本众多,常见的有CentOS、Ubuntu、Debian等等,安装方法不尽相同,读者可自行上网查询或进入此处进行安装。

C/C++编译与版本

编译过程

开发者使用编辑程序进行编辑得到源程序文件.c,由编译程序翻译得到目标程序文件.o,再由链接程序链接得到可执行程序文件.exe(Windows),运行可执行程序得到结果。写在源文件中的源代码是人类可读的源。它需要编译转为机器语言,这样CPU可以按给定指令执行程序。

开发者使用编辑程序进行编辑得到源程序文件.cpp,由编译程序翻译得到目标程序文件.obj,再由链接程序链接得到可执行程序文件.exe(Windows),运行可执行程序得到结果。写在源文件中的源代码是人类可读的源。它需要编译转为机器语言,这样CPU可以按给定指令执行程序。

版本与标准化

发布时间 名称 说明
1987 K&RC Brian Kernighan 和 Dennis Ritchie合著的The C Programming Language第1版是公认的C标准。它定义了c语言,但没有定义c库。它不是官方的标准。
1989 ANSIC/C89/C90 国际标准为ISO/IEC9899-1990,中国国家标准GB/T 15272-94是国际ISO标准的中文翻译。ANSI于1989年批准该标准,因此通常称之为C89。ISO于1990年批准该标准,因而又有C90的叫法。
1999 C99/C9X ISO/IEC 9899:1999的非正式名称,在1999年推出,被ANSI于2000年3月采用。
2011 C11/C1X C11标准是 ISO/IEC 9899:2011-- C 的简称,曾用名为C1X。C11标准是C语言标准的第三版。
发布时间 名称 说明
2020 C++20 引入三方运算符、标准库改进等
2017 C++17 标准库改进等
2014 C++14 二进制字面量、变量模板等
2011 C++11 引入众多的库、匿名函数等
2003 C++03 错误修复版本
1998 C++98 bool类型、模板实例化、export和mutable关键字等