C语言笔记

C语言简介

C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。

C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。

当前最新的 C 语言标准为 C18 ,在它之前的 C 语言标准有 C17、C11…C99 等。

第一个C程序

1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("Hello, World! \n");
return 0;
}

开发环境

Unix/Linux/Mac环境

如果是使用Unix/Linux/Mac环境,可以使用gcc -v命令检查本地是否安装了gcc环境。

Windows环境

需要先安装Cygwin

使用VSCode和Code Runner插件

使用VSCode的Code Runner插件可以方便地编译和运行C程序

基础语法

  • 分号:在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。

  • 注释

    • 单行注释
    • 多行注释
  • 标识符:
    标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。

    C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。

  • 关键字

  • 空格:只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。在 C 中,空格用于描述空白符、制表符、换行符和注释。

数据类型

变量

常量

存储类

  • auto
  • register
  • static
  • extern

运算符

判断

循环

函数

作用域规则

数组

枚举

指针

函数指针与回调函数

字符串

结构体

共用体

位域

typedef

输入&输出

文件读写

预处理

头文件

强制类型转换

错误处理

递归

可变参数

内存管理

命令行参数

常用数据结构和算法

gdb和程序调试

gdb常用命令

  • attach
  • break/b
  • continue/c
  • info
  • set print pretty

makefile和工程

堆和栈

程序的结构-ELF文件

程序的结构-中间文件、可执行程序、静态库、动态库

栈溢出

程序漏洞、pwn