C 语言是一种通用的、面向过程式的计算机程序设计语言

  • 1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言
  • C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用
  • 当前最新的C语言标准为 C11 ,在它之前的C语言标准为 C99

C语言简介

关于C语言

C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。
在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。
UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言

  • C 语言是为了编写 UNIX 操作系统而被发明的
  • C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的
  • C 语言标准是于 1988 年由美国国家标准协会(ANSI,全称 American National Standard Institute)制定的
  • 截至 1973 年,UNIX 操作系统完全使用 C 语言编写
  • 目前,C 语言是最广泛使用的系统程序设计语言
  • 大多数先进的软件都是使用 C 语言实现的
  • 当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言编写的
  • 易于学习
  • 结构化语言
  • 它产生高效率的程序
  • 它可以处理底层的活动
  • 它可以在多种计算机平台上编译

为什么要使用 C?

C 语言最初是用于系统开发工作,特别是组成操作系统的程序。由于 C 语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用 C 语言作为系统开发语言。下面列举几个使用 C 的实例:

  • 操作系统
  • 语言编译器
  • 汇编器
  • 文本编辑器
  • 打印机
  • 网络驱动器
  • 现代程序
  • 数据库
  • 语言解释器
  • 实体工具

C 程序

一个 C 语言程序,可以是 3 行,也可以是数百万行,它可以写在一个或多个扩展名为 .c 的文件中
例如,hello.c。您可以使用 “vi”“vim” 或任何其他文本编辑器来编写您的 C 语言程序

C11 新特性

C11(也被称为C1X)指ISO标准ISO/IEC 9899:2011,是当前最新的C语言标准。在它之前的C语言标准为C99

  • 对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及头文件)
  • Noreturn 函数标记,类似于 gcc 的 _attribute((noreturn))
  • _Generic 关键字
  • 多线程(Multithreading)支持,包括:
    _Thread_local存储类型标识符,头文件,里面包含了线程的创建和管理函数
    _Atomic类型修饰符和头文件
  • 增强的Unicode的支持。基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件
  • 删除了 gets() 函数,使用一个新的更安全的函数gets_s()替代
  • 增加了边界检查函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等
  • 增加了更多浮点处理宏(宏)
  • 匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准
  • 静态断言(Static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理
  • 新的 fopen() 模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用
  • 新增 quick_exit() 函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作

C 编译器

如果您想要设置 C 语言环境,推荐安装两类可用的软件,文本编辑器C语言编译器
文本编辑器 用于输入您的程序,包括

编辑器 地址
Notepad
vim/vi
OS Edit command
EMACS
Epsilon https://www.eclipse.org/downloads/
CLion https://www.jetbrains.com/products.html?fromMenu#lang=cpp

文本编辑器的名称和版本在不同的操作系统上可能会有所不同。例如,

  • Notepad 通常用于 Windows 操作系统上
  • vim/vi可用于 Windows 和 Linux/UNIX 操作系统上

通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。C 程序的源文件通常使用扩展名 “.c”
在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它

C 语言编译器 用于把源代码编译成最终的可执行程序。写在源文件中的源代码是人类可读的源,它需要”编译”,转为机器语言,这样 CPU 可以按给定指令执行程序
最常用的免费的编译器是 GNU 的 C/C++ 编译器,如果您使用的是 HP 或 Solaris,则可以使用各自操作系统上的编译器
以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言

C语言环境安装

Windows 上的安装

开发工具 描述
Visual Studio IDE 官方地址 https://visualstudio.microsoft.com/zh-hans/
是微软功能完备的 IDE,可用于编码、调试、测试和部署到任何平台
CLion IDE 官方地址 https://www.jetbrains.com/products/?fromMenu#lang=cpp
JetBrains A smart cross-platform IDE for C and C++
MinGW IDE 为了安装 MinGW,请访问 MinGW 下载页面,下载最新版本的 MinGW 安装程序,找格式为 MinGW-.exe
当安装 MinWG 时,您至少要安装 gcc-core、gcc-g++、binutils 和 MinGW runtime,但是一般情况下都会安装更多其他的项
添加您安装的 MinGW 的 bin 子目录到您的 PATH 环境变量中,这样您就可以在命令行中通过简单的名称来指定这些工具
当完成安装时,您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具

macOS 上的安装

如果您使用的是 macOS系统,请在命令行使用下面的命令来检查您的系统上是否自带安装了 GCC:

  1. gcc -v

如果未安装 GCC,那么请按照下面详细说明安装 GCC

开发工具 描述
Xcode 编辑器 最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器
官方地址 developer.apple.com/technologies/tools/
CLion IDE 官方地址 https://www.jetbrains.com/products/?fromMenu#lang=cpp
JetBrains A smart cross-platform IDE for C and C++
Visual Studio IDE 官方地址 https://visualstudio.microsoft.com/zh-hans/
是微软功能完备的 IDE,可用于编码、调试、测试和部署到任何平台
命令行安装 brew install gcc gcc-c++

UNIX/Linux 上的安装

如果您使用的是 Linux 或 UNIX,请在命令行使用下面的命令来检查您的系统上是否安装了 GCC:

  1. gcc -v

如果您的计算机上已经安装了 GNU 编译器,则会显示如下消息:

  1. 使用内建 specs
  2. COLLECT_GCC=gcc
  3. COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
  4. OFFLOAD_TARGET_NAMES=nvptx-none
  5. OFFLOAD_TARGET_DEFAULT=1
  6. 目标:x86_64-redhat-linux
  7. 配置为:../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
  8. 线程模型:posix
  9. gcc 版本 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)

如果未安装 GCC,那么请按照 http://gcc.gnu.org/install/ 上的详细说明安装 GCC

如果你的Linux发行版是Fedora/RedHat/RHEL/CentOS,可以按以下命令行安装

  1. yum -y install gcc gcc-c++