C 语言编程教程

C 语言首页

C 语言基础

C 语言概述 C 语言特性 C 语言发展历史 C 语言下载安装和环境配置 C 语言程序结构 C 语言 Hello World C 编译过程 C 注释 C 标记 C 关键字 C 标识符 C 用户输入 C 基本语法 C 数据类型 C 变量 C 整数提升 C 类型转换 C 类型转换 C 布尔值

C 语言中的常量和文字

C 常量 C 字面量 C 转义序列 C 格式说明符

C 语言中的运算符

C 运算符 C 算术运算符 C 关系运算符 C 逻辑运算符 C 位运算符 C 赋值运算符 C 一元运算符 C 递增和递减运算符 C 三元运算符 C sizeof 运算符 C 运算符优先级 C 其他运算符

C 语言中的决策

C 决策 C if 语句 C if...else 语句 C 嵌套 if 语句 C switch 语句 C 嵌套 switch 语句

C 语言中的循环

C 循环 C While 循环 C For 循环 C Do...while 循环 C 嵌套循环 C 无限循环 C Break 语句 C Continue 语句 C goto 语句

C 语言中的函数

C 函数 C Main 函数 C 按值调用函数 C 按引用调用函数 C 嵌套函数 C 可变参数函数 C 用户定义函数 C 回调函数 C return 语句 C 递归

C 语言中的作用域规则

C 作用域规则 C 静态变量 C 全局变量

C 语言中的数组

C 数组 C 数组的属性 C 多维数组 C 将数组传递给函数 C 从函数返回数组 C 可变长度数组

C 语言中的指针

C 指针 C 指针和数组 C 指针的应用 C 指针运算 C 指针数组 C 指向指针的指针 C 将指针传递给函数 C 从函数返回指针 C 函数指针 C 指向数组的指针 C 指向结构体的指针 C 指针链 C 指针 vs 数组 C 字符指针和函数 C NULL 指针 C void 指针 C 悬垂指针 C 解引用指针 C Near、Far 和 Huge 指针 C 指针数组的初始化 C 指针与多维数组

C 语言中的字符串

C 字符串 C 字符串数组 C 特殊字符

C 语言的结构体和联合

C 结构体 C 结构体和函数 C 结构体数组 C 自引用结构 C 查找表 C 点 (.) 运算符 C 枚举(或 enum) C 结构填充和打包 C 嵌套结构 C 匿名结构和联合 C 联合 C Bit 位字段 C Typedef

C 语言中的文件处理

C 输入和输出 C 文件 I/O(文件处理)

C 语言中的预处理器

C 预处理器 C #pragma 编译指示 C 预处理器操作符 C 宏 C 头文件

C 语言中的内存管理

C 内存管理 C 内存地址 C 存储类

C 其他主题

C 错误处理 C 可变参数 C 命令执行 C 数学函数 C static 静态关键字 C 随机数生成 C 命令行参数

C 语言编程资源

C 语言问题与解答答案 C 语言快速指南 C 语言速查表 C 语言实用资源 C 语言讨论


C - 下载安装和开发环境配置

要开始学习C 语言编程,第一步是设置一个允许你输入和编辑 C 语言程序的环境,以及一个可以构建可在操作系统上运行的可执行文件的编译器。你的电脑上需要两个软件工具:(a) C 编译器和 (b) 文本编辑器。

C 编译器

源文件中编写的源代码是程序的可读源代码。它需要被"编译"成机器语言,这样你的 CPU 才能按照给出的指令真正执行程序。

市面上有很多 C 编译器。以下是一些广泛使用的 C 编译器的列表:

GNU 编译器集合 (GCC) - GCC 是一个流行的开源 C 编译器。它适用于多种平台,包括 Windows、macOS 和 Linux。GCC 以其丰富的功能和对各种 C 标准的支持而闻名。

Clang:Clang 是一个开源 C 编译器,是 LLVM 项目的一部分。它适用于多种平台,包括 Windows、macOS 和 Linux。Clang 以其速度和优化能力而闻名。

Microsoft Visual C++ − Microsoft Visual C++ 是由 Microsoft 开发的专有 C 编译器。它仅适用于 Windows。Visual C++ 因其与 Microsoft Visual Studio 开发环境的集成而闻名。

Turbo C − Turbo C 是由 Borland 开发的一款已停产的 C 编译器。它在 20 世纪 90 年代初非常流行,但如今已不再广泛使用。

本教程中的示例是在 GCC 编译器上编译的。最常用且免费的编译器是 GNU C/C++ 编译器。以下部分介绍如何在各种操作系统上安装 GNU C/C++ 编译器。我们之所以同时提到 C/C++,是因为 GNU gcc 编译器同时适用于 C 和 C++ 编程语言。

在 UNIX/Linux 上安装

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

$ gcc -v

如果您的 Ubuntu Linux 计算机上安装了 GNU 编译器,它会打印如下消息 -

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v . . .
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)

如果未安装 GCC,则需要按照 https://gcc.gnu.org/install/

上的详细说明自行安装。

在 Mac OS 上安装

如果您使用的是 Mac OS X,获取 GCC 最简单的方法是从 Apple 网站下载 Xcode 开发环境,并按照简单的安装说明进行操作。安装完 Xcode 后,您就可以使用 GNU C/C++ 编译器了。

Xcode 目前可在developer.apple.com/technologies/tools/获取

Windows 系统安装

要在 Windows 系统上安装 GCC,您需要安装 MinGW。要安装 MinGW,请前往 MinGW 下载页面 https://www.mingw-w64.org/downloads/,然后点击链接进入 MinGW 下载页面。从此处下载最新版本的 MinGW 安装程序 mingw-w64-install.exe。

安装 MinGW 时,您至少需要安装 gcc-core、gcc-g++、binutils 和 MinGW 运行时,但您可能希望安装更多程序。

将 MinGW 安装目录下的 bin 子目录添加到 PATH 环境变量中,以便您可以在命令行中通过这些工具的简单名称来指定它们。

安装完成后,您将能够从 Windows 命令行运行 gcc、g++、ar、ranlib、dlltool 和其他几个 GNU 工具。

文本编辑器

您需要一个文本编辑器来编写程序。例如,Windows 记事本、OS Edit 命令、Brief、Epsilon、EMACS 以及 vim 或 vi。

文本编辑器的名称和版本会因操作系统而异。例​​如,Windows 系统会使用记事本,而 vim 或 vi 则可用于 Windows 以及 Linux 或 UNIX 系统。

使用编辑器创建的文件称为源文件,它们包含程序源代码。C 语言程序的源文件通常以".c"为扩展名。

在开始编程之前,请确保您已拥有一个文本编辑器,并且您拥有编写计算机程序、将其保存为文件、编译并最终执行的足够经验。

使用 IDE

使用通用文本编辑器(例如记事本或 vi)进行程序开发可能非常繁琐。您需要输入并保存以".c"为扩展名的程序(例如"hello.c"),然后使用以下命令进行编译 -

gcc -c hello.c -o hello.o
gcc -o hello.exe hello.o

然后从命令提示符运行可执行文件以获取输出。但是,如果源代码包含错误,编译将无法成功。因此,我们需要在编辑器程序和命令终端之间反复切换。为了避免这个繁琐的过程,我们应该使用 IDE(集成开发环境)。

有许多 IDE 可用于编写、编辑、调试和执行 C 程序。例如 CodeBlocks、NetBeans、VSCode 等。

CodeBlocks 是一款流行的 C 和 C++ 开源 IDE。它可安装在各种操作系统平台上,例如 Windows、Linux 和 MacOS。

对于 Windows 用户,请从 https://www.codeblocks.org/downloads/binaries/ 下载 codeblocks-20.03mingw-setup.exe。这将在您的计算机上安装 CodeBlocks 和 MinGW 编译器。在安装过程中,请选择 MinGW 作为要使用的编译器。

示例

安装完成后,启动它并输入以下代码 -

#include <stdio.h>

int main() {
   /* 我的第一个 C 语言程序 */
   printf("Hello, World! 
");

   return 0;
}

输出

执行此代码后,您将获得以下输出 -
Hello, World!

从"构建"菜单,构建并运行程序(使用 F9 快捷键)。"构建日志"窗口显示编译成功的消息。输出 (Hello World) 显示在单独的命令提示符终端中。

Hello World