掌握预定义宏、对象宏、函数宏、字符串化、连接符、条件编译和头文件包含。
MySQL C API 通过 libmysqlclient 提供对客户端/服务器协议的底层访问。完整流程包括初始化、配置连接、执行 SQL、区分结果集与受影响行数、释放资源和关闭连接。业务代码还必须解决凭据、超时、字符集、SQL 注入和断线处理问题。
1. 安装与编译不同发行版的软件包名称可能是 MySQL Connector/C、M ...
排序是把记录按一个或多个关键字重新排列的过程。插入、选择、交换、分治等不同思想,会带来不同的时间、空间、稳定性和数据适应性。本文系统梳理直接插入、希尔、选择、堆、冒泡、快速和归并排序,并给出选择算法时真正需要考虑的边界。
1. 排序的基本概念1.1 内部排序与外部排序
内部排序:待排序数据可以全部放入内存;
外部排序:数据规模超过内存,需要在内存与外部存 ...
栈和队列都是操作位置受到限制的线性表。栈遵循后进先出,适合保存尚未完成的上下文;队列遵循先进先出,适合按照到达顺序处理任务。理解它们的关键不仅是记住 LIFO 与 FIFO,还要掌握空满状态、底层实现和边界不变量。
1. 栈:后进先出栈(Stack)只允许在栈顶插入和删除:
push:把元素压入栈顶;
pop:删除栈顶元素;
top/peek ...
线性表描述“一对一”的前后关系,顺序表和链表则是它的两种典型存储方案:前者把元素连续地放进数组,后者用指针把分散的节点串起来。二者没有绝对优劣,真正的选择依据是访问模式、插入删除位置、内存开销和缓存局部性。
1. 线性表线性表是由 $n$ 个具有相同性质的数据元素组成的有限序列。除首元素和尾元素外,每个元素有且仅有一个直接前驱和一个直接后继。
线性表是逻 ...
数据结构并不是一份需要死记硬背的名词表,而是一套解决问题的方法:先确认数据之间的关系,再选择合适的存储方式,最后围绕这些数据设计高效、可靠的操作。本文从数据结构与算法的基本概念出发,建立后续学习顺序表、链表、栈、队列、树和图所需要的整体框架。
1. 什么是数据结构数据结构(Data Structure)是具有一种或多种特定关系的数据元素的集合,以及这些元 ...
前言C 语言是一门结构化程序设计语言。一个程序无论多么复杂,基本执行流程都可以由三种结构组合而成:
顺序结构:语句按照书写顺序依次执行;
选择结构:根据条件选择不同分支;
循环结构:在条件满足时重复执行一段代码。
C 语言使用 if 和 switch 实现选择结构,使用 while、for 和 do...while 实现循环结构,并通过 break、co ...
前言C 语言的基础语法并不复杂,但初学阶段有很多概念非常容易混淆:
编译器和 IDE 是一回事吗?
.c 文件如何变成可执行程序?
一个工程为什么只能有一个 main 函数?
字符 'a' 和字符串 "a" 有什么区别?
字符串末尾为什么必须有 '\0'?
sizeof("abc") ...
前言程序处理的每一份数据都有类型。类型不仅决定一段数据叫什么,更决定:
需要多少存储空间;
可以表示怎样的值;
数据在内存中如何解释;
可以参与哪些运算;
输入和输出时应使用什么格式。
例如,int 通常用来保存整数,double 用来保存带小数的数据,char 用来保存字符编码。即使内存中的若干位完全相同,使用不同类型解释,也可能得到不同结果。
本文围 ...
