02 2025 档案
摘要:单链表 声明一个指向自身的结构体 struct Test { int x; int y; struct Test test; }; 输出结果: error! 程序报错,因为这样会造成无限的循环。当编译器解析到struct Test test时test是结构体Test的成员,定义test成员需要Tes
阅读全文
摘要:结构体 结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。 结构体声明 struct 结构体名称 { 结构体成员1; 结构体成员2; 结构体成员3; ... }; 其中,
阅读全文
摘要:宏定义的实质 宏定义实质:只替换,不计算。 C语言三大预处理功能 宏定义 文件包含 条件编译 不带参数的宏定义 宏定义分为带参数和不带参数两种情况,不带参数的情况就是我们熟悉的直接替换操作。 例如: #define PI 3.14 这个宏定义的作用是把程序中出现的 PI 在预处理阶段全部替换成 3.
阅读全文
摘要:动态内存管理 动态内存管理的几个函数 malloc -- 申请动态内存空间 free -- 释放动态内存空间 calloc -- 申请并初始化一系列内存空间 realloc -- 重新分配内存空间 malloc 函数原型: void *malloc(size_t size); malloc函数向系统
阅读全文
摘要:排序 所谓排序就是将一对零零散散的数据重新整理成从大到小或从小到大的序列。 排序的算法有很多,比如大家耳熟能详的冒泡排序、插入排序、希尔排序、选择排序等等。其中名声最大的当属快速排序,它是二十世纪十大算法之一,是由图灵奖得主东尼·霍尔提出的排序算法。 快速排序 快速排序算法的基本思想是:通过一趟排序
阅读全文
摘要:递归 递归的案例 汉诺塔 谢尔斯宾基三角形 目录树的索引 递归自拍照 递归的实质 递归从原理上来说就是函数调用自身这么一个行为 void recursion(void); void recursion(void) { static int count = 10; //静态局部变量 printf("H
阅读全文
摘要:初识函数 为什么要自己定义函数? 因为随着程序规模的变大,都免不了会遇到下面这些问题: main函数变得相当冗杂,程序可读性差 程序复杂度不断提高,编程变成了头脑风暴 代码前后关联度高,修改代码往往牵一发而动全身 变量的命名都成了问题(因为简单的名字都用完了啊,小明,小红,旺财,阿福,隔壁家老王这些
阅读全文
摘要:指针 变量在内存中的存放 在内存中,字节是最小的存储单元。对于一个内存单元来说,指针就是单元的地址,每个地址可以存放一个字节的数据。存放一个整形变量(int)就需要动用到四个存储单元。 在内存中完全没有存储变量名的必要。 因为编译器知道具体每一个变量名对应的存放地址,所以当你读取某个变量的时候,编译
阅读全文
摘要:数组 数组的定义 语法:类型 数组名[元素个数] (方括号内只能是常量或者常量表达式) int a[6]; char b[24]; double c[3]; 上面几个类型分别占用内存的字节数为: int a[6] ==> 4 * 6 = 24 char b[24] ==> 1 * 24 = 24 d
阅读全文
摘要:循环结构 当需要重复执行一段代码很多次时,可以使用循环结构来解决问题 while语句 语法: while (表达式) 循环体 只要表达式的值为真(非零),就会不断执行循环体里的内容。 实例1 计算1+2+3+...+100的结果 int main() { int i=1, sum=0; wh
阅读全文
摘要:分支结构 if 语句 if语句(1) 格式: ...... // 其他语句 if (表达式) { ...... // 逻辑值为真所执行的语句、程序块 } ...... // 其它语句 int main() { int i; printf("您老贵庚啊:"); scanf("%d",&i);//接
阅读全文
摘要:关系运算符和逻辑运算符 分支结构 我们把需要让程序进行判断和选择的设计称之为分支结构 关系运算符 C语言中,使用关系运算符来比较两个数的大小关系: 优先级相同(高): " < " (小于) "<=" (小于或等于) " > " (大于) ">=" (大于或等于) 优先级相同(低): " == " (
阅读全文
摘要:运算符 C语言通过提供运算符来支持我们对数据进行处理 赋值运算符 赋值运算符: = 赋值运算符的左边必须是一个lvaule(左值),变量名就是lvaule,常量就不是lvaule。 int a; a = 5; 如果试图就非lvalue放在左边就会出错 int a; 5 = a; //报错 关于lva
阅读全文
摘要:字符 C语言中用类型符char定义字符变量。 如: char a = 'C'; 定义字符型变量a并使初值为字符'C','C'的ASCII代码是67,系统把整数67赋给变量a。 a是字符变量,实质上是一个字节的整形变量,由于它常用来存放字符。所以称之为字符变量。可以把0~127之间的整数赋给一个字符型
阅读全文
摘要:比特位 CPU能读懂的最小单位——— 比特位,bit,b 比特位只能存放二进制数,即只能存放0或者1 字节 内存机构的最小寻址单位——— 字节,Byte, B 一个字节由八个比特位构成 1Byte == 8bit 一个字节可以表示的最大数 1 1 1 1 1 1 1 1 进制转换 二进制 十进制 十
阅读全文
摘要:C语言允许使用的数据类型如下 graph LR 数据类型-->基本类型 基本类型-->a["整数类型( int )"] 基本类型-->b["浮点数类型(float、double)"] 基本类型-->c["字符类型( char )"] 基本类型-->d["布尔类型( _Bool )"] 基本类型-->
阅读全文
摘要:变量和常量 变量和常量是程序处理的两种基本数据对象 什么是变量? 变量的意义就是确定目标并提供存放的空间 变量的组成 变量由变量名和存储单元组成。变量名用于确定目标,存储单元用于存放变量的值 变量名 变量名只能是英文字母(A-Z, a-z)和数字(0-9)或者下划线( _ ) 组成。 变量名必须以字
阅读全文
摘要:什么是常量 在程序运行过程中,其值不能被改变的量被称为常量 整形常量:如 520,1314,123 等都是整形常量 实型常量:实型常量有两种表示形式: 十进制小数形式,由数字和小数点组成。 如: 3.14,5.12,8.97等 指数形式,如:12.34e3(代表12.34×103),-346.87e
阅读全文