C语言备忘录 - 01. 概述

一、准备 Linux C语言环境

在 Linux 系统中我们需要确认是否已安装 gcc 编译器:

# 查看 gcc 版本
gcc -v

# CentOS 下通过 yum 安装 gcc 编译器
yum install gcc -y

# 安装 gdb 调试工具(非必需)
yum install gdb -y
# 安装 C 语言帮助手册(非必需)
yum install man-pages.noarch -y

# 可以通过 man 命令查看帮助手册,
# C 语言相关手册一般在第二章.
# 查看 open 函数的帮助手册
man 2 open

二、Hello World

1. 使用编辑器创建我们的第一个 C 程序文件:hello.c

#include <stdio.h>

int main()
{
  /* 打印字符串 */
  printf("Hello world!\n");

  return 0;
}
  • #include :预处理器指令,告诉编译器在实际编译之前要包含的文件。
  • int main() :主函数,程序从这里开始执行。
  • /* */ :注释,被编译器忽略的内容。
  • printf() :打印函数,输出内容到标准输出。
  • return :函数返回语句,即终止 main() 函数。

2. 编译并执行程序

# 使用 gcc 编译器编译 hello.c 文件
# 会生成一个默认的 a.out 可执行程序
gcc hello.c
# 执行 a.out 程序
./a.out

# 也可以编译后立即执行
gcc hello.c && ./a.out

# 编译多个文件并指定输出的程序名称
gcc test1.c test2.c -o main.out
# 执行 main.out 程序
./man.out

三、分隔符

分隔符用于分隔语句和表达式,常见的分隔符包括:

  • 逗号(,):用于分隔变量声明或函数参数。
  • 分号(;):用于结束语句。
  • 圆括号(()):用于分组表达式、函数调用。
  • 花括号({}):用于定义代码块。
  • 方括号([]):用于数组下标。

四、两种注释方式

// 单行注释

/*
 多行注释
 多行注释
 */

五、标识符

标识符是程序中变量、函数、数组等的名字。标识符由字母(大写或小写)、数字和下划线组成,但第一个字符必须是字母或下划线,不能是数字。

标识符区分大小写,即 Liwy 与 liwy 是两个不同的标识符。

六、关键字

关键字为 C语言保留字,这些关键字不能作为标识符

  • void :声明函数无返回值或无参数,声明无类型指针
  • char :声明字符型变量或函数返回值类型
  • int :声明整型变量或函数返回值类型
  • float :声明浮点型变量或函数返回值类型
  • double :声明双精度浮点型变量或函数返回值类型
  • short :声明短整型变量或函数返回值类型
  • long :声明长整型变量或函数返回值类型
  • signed :声明有符号类型变量或函数返回值类型
  • unsigned :声明无符号类型变量或函数返回值类型
  • enum :声明枚举类型
  • struct :声明结构体类型
  • union :声明共用体类型
  • const :声明常量,如果变量被 const 修饰,其值就不能再被改变
  • volatile :声明变量在程序执行中可被隐含地改变
  • auto :声明自动变量
  • register :声明寄存器变量
  • static :声明静态变量
  • extern :声明变量或函数是在其它文件或本文件的其他位置定义
  • if :条件语句
  • else :条件语句否定分支
  • switch :开关语句
  • case :开关语句分支
  • default :开关语句中的"其它"分支
  • for :一种循环语句
  • while :循环语句的循环条件
  • do :循环语句的循环体
  • break :跳出当前循环
  • continue :结束当前循环,开始下一轮循环
  • goto :跳转语句
  • sizeof :计算数据类型或变量所占字节数
  • typedef :用以给数据类型取别名
  • return :子程序返回语句

C99 新增关键字

  • _Bool :定义布尔类型变量
  • _Complex :定义复数类型变量
  • _Imaginary :定义虚数类型变量
  • inline :定义内联函数
  • restrict :告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容。

C11 新增关键字

  • _Alignas :指定内存对齐方式
  • _Alignof :获取类型的内存对齐方式
  • _Atomic :定义原子类型变量,支持并发访问
  • _Generic :根据参数类型选择不同的代码
  • _Noreturn :告诉编译器函数不会返回
  • _Static_assert :在编译时检查表达式的真假
  • _Thread_local :定义线程局部变量,每个线程都有一份独立的副本
原文链接:,转发请注明来源!