C语言指针与回调函数
👇😊 C语言函数指针 😊👇 🌈 1. 函数指针是什么?想象你有一个遥控器📱,可以控制不同的电器(比如电视、空调)。每个按钮对应一个功能。 函数指针就像这个遥控器,它“指向”一个函数,按下按钮(调用指针)就能执行对应的函数! 本质:存储函数的内存地址,通过地址调用函数。 🌈 2. 函数指针的声明与赋值2.1 声明函数指针📝 语法:返回类型 (*指针名)(参数类型1, 参数类型2...); 12// 声明一个指向“接受两个int参数,返回int”的函数的指针int (*pFunc)(int, int); 🔍 对比普通函数声明: 12int max(int a, int b); // 普通函数int (*pFunc)(int, int); // 函数指针 2.2 给函数指针赋值将函数名(即函数地址)赋给指针(&可省略): 12pFunc = max; // 正确 ✅pFunc = &max; // 也正确 ✅ ❌ 错误示例: 1pFunc = max(); // ❌...
C语言指针
前言本节内容十分的重要,所以需要非常认真的对待,我也会可能的用最容易理解的方式进行讲解!!! 🧭 C语言指针终极详解——从零到精通,逐层击破!指针是C语言的灵魂,但也是新手最头疼的部分。别怕!这篇教程将用 保姆级讲解 + 超多生活化比喻,带你彻底征服指针! 一、指针的本质——内存世界的「GPS坐标」1. 内存就像快递柜计算的内存被划分成无数个小格子(字节),每个格子有唯一编号(地址)。 变量:快递柜里的包裹📦(数据) 指针:记录包裹所在柜子编号的纸条📝 int num = 10; // 假设num存放在编号0x1000的柜子 printf("变量地址:%p", &num); // 输出0x1000 2. 指针变量——专门存地址的「地址簿」 声明指针:告诉编译器这个本子记录哪种柜子的地址 int *p; // 记录“整数柜”的地址 char *cp; // 记录“字符柜”的地址 重点:int *中的*表示这是一个指针变量,int指明指向的数据类型。 二、指针的「三步操作」——从入门到熟练1....
C enum(枚举)
📚 C语言枚举(enum)——给数字赋予意义的名字 一、什么是枚举?——数字的「身份证」概念:枚举(Enumeration)是一种用户自定义的数据类型,用于为一组整数常量赋予有意义的名字。思想:用易于理解的单词代替数字,让代码更清晰、更易维护。作用: 提高代码可读性(看到名字就知道含义) 限制变量的取值范围(只能选枚举中的值) 替代散乱的#define宏定义 类比理解: 假设你管理一个图书馆📚,书籍分类用数字表示: 不用枚举:看到1,需要查文档才知道是“科幻类” 使用枚举:直接写SciFi,一看就懂! 二、为什么需要枚举?——告别「神秘数字」痛点: // 用数字表示状态,难以记忆! if (status == 1) { /* 处理成功 */ } else if (status == 2) { /* 处理失败 */ } 枚举解决方案: enum Status {Success=1, Failure=2}; if (status == Success) {...
C语言二维数组
👇😊 C语言二维数组深度解析! 😊👇 🌈 1. 二维数组是什么?现在你的手里一个数学表格📊,或者一个棋盘♟️,每个格子可以存放一个数据。 行(Row) → 横向排列(比如Excel中的行号) 列(Column) → 纵向排列(比如Excel中的列标) 元素 → 每个格子里的数据 例如: 123456789学生成绩表(3个学生,2门课)行 → 学生 | 列 → 科目+----+----+| 80 | 90 | → 学生1的成绩+----+----+| 70 | 85 | → 学生2的成绩+----+----+| 95 | 88 | → 学生3的成绩+----+----+ 🌈 2. 二维数组的声明与初始化2.1 声明二维数组📝 语法:数据类型 数组名[行数][列数]; 1int scores[3][2]; // 3行2列的整型数组(3学生×2科目) 2.2 初始化二维数组 逐行初始化:用大括号分组 12345int scores[3][2] = { {80, 90}, //...
C语言数组
👇😊 C语言数组 😊👇 🌈 1. 数组是什么?想象你有一排储物柜🔒,每个柜子编号从0开始,存放同类型物品(比如全是书包)。这就是数组! 作用:一次性管理多个同类数据,避免定义一堆变量! 特点:连续内存存储,快速访问任意元素! 🌈 2. 数组的声明与初始化2.1 声明数组📝 语法:数据类型 数组名[元素个数]; 12int scores[5]; // 声明能存5个整数的数组double prices[10]; // 声明能存10个双精度数的数组 ⚠️ 错误示例: 12int size = 5;int arr[size]; // ❌ 错误!数组大小必须是常量(C99前) 2.2 初始化数组 完全初始化:指定所有元素 1int nums[3] = {10, 20, 30}; // nums[0]=10, nums[1]=20, nums[2]=30 部分初始化:剩余元素自动补0 1int arr[5] = {1, 2}; // arr =...
C语言作用域规则
👇😊 C语言作用域规则 😊👇 🌈 1. 作用域是什么?想象你家的房间🏠: 客厅的零食🍿 → 全家人都能拿(全局变量) 你抽屉里的日记📔 → 只有你能看到(局部变量)作用域就是变量的“可见范围”——出了这个区域,变量就“隐身”了!👻 🌈 2. 变量的三种身份2.1 局部变量(Local Variables) 位置:在函数或代码块内部定义 寿命:函数被调用时“出生”,函数结束“死亡”💀 特点:只能在所属函数/代码块内使用 🌰 例子: 123456789101112#include <stdio.h>void myFunction() { int localVar = 5; // 局部变量 printf("Inside function: %d\n", localVar); // 正常输出5}int main() { myFunction(); // printf("%d", localVar); ❌...
C语言函数
👇😊 C语言函数超超详细讲解!新手保姆级教程! 😊👇 🌈 0. 为什么要学函数?想象你要盖一座房子🏠: 如果所有砖头、水泥、电线都堆在一起,你会疯掉! 函数就像提前做好的“预制件”:窗户、门、楼梯… 随用随拿,代码复用! 举个栗子🌰:你需要10次计算两个数的最大值,如果不用函数: 12345// 第1次计算if(a > b) max = a; else max = b; // 第2次计算if(c > d) max = c; else max = d; // ...重复10次!😫 用函数后: 12345int max(int x, int y) { return (x > y) ? x : y; } // 定义一次// 调用10次!max(a, b); max(c, d); // ...清爽!✨ 🌈 1. 解剖函数:从“头”到“脚”1.1 函数头(Function Header)就像人的“身份证”🆔,告诉编译器:“我是谁,我能做什么”📝 格式:返回类型 函数名(参数类型1 参数1, 参数类型2...
C语言循环
🔄 C语言循环——编程中的「重复劳动小助手」循环就像洗碗机👩🍳,自动重复执行任务直到完成!下面用最有趣的方式拆解循环结构! 一、循环类型——三种「洗碗模式」1. while循环——先检查再洗碗特点:先看碗脏不脏,再决定洗不洗语法: 123while(条件) { // 条件为真时重复执行} 生活例子: 12345int 脏碗数量 = 5;while(脏碗数量 > 0) { printf("洗了1个碗🍽️\n"); 脏碗数量--; // 别忘更新条件,否则无限循环!} 2. for循环——精确定时洗碗特点:明确知道要洗多少次语法: 123for(初始化; 条件; 更新) { // 循环体} 生活例子: 1234567for(int i=1; i<=5; i++) { printf("第%d次洗碗\n", i);}/* 输出:第1次洗碗...第5次洗碗 */ for循环三要素: ...
C语言判断
🚦 C语言判断结构——程序中的「红绿灯」判断结构让程序像交通信号灯一样,根据不同条件决定执行哪段代码。就像“红灯停🚦,绿灯行🚗”,程序也需要根据条件做出选择! 一、if 语句——单条件检查作用:如果条件成立,就执行代码块语法: 123if(条件) { // 条件为真时执行} 生活例子: 1234int 下雨 = 1; // 1表示下雨if(下雨) { printf("带伞☔"); } 二、if-else 语句——二选一作用:条件成立执行A,否则执行B语法: 12345if(条件) { // 条件为真执行} else { // 条件为假执行} 生活例子: 123456int 温度 = 28;if(温度 > 30) { printf("开空调❄️");} else { printf("吹风扇💨"); } 三、嵌套...
C语言运算符
🧮 C运算符大全——编程世界的「数学工具包」运算符就像程序员手中的魔法棒✨,能进行各种计算和判断。下面用最有趣的方式拆解所有运算符! 一、算术运算符——基础计算器 🧮作用:处理数字的加减乘除 运算符 描述 例子 生活类比 + 加法 3 + 5 → 8 苹果🍎 + 香蕉🍌 = 总水果数 - 减法 10 - 4 → 6 钱包💰减掉支出 = 剩余金额 * 乘法 2 * 3 → 6 每人2块🍕,3人共需6块 / 除法 10 / 3 → 3 10块糖分3人,每人3块(整数除) % 取余 10 % 3 → 1 10块糖分3人,剩下1块🍬 ++ 自增1 a++ vs ++a 先吃蛋糕🎂 vs 先加奶油再吃 -- 自减1 b-- vs --b 先喝奶茶🧋 vs 先减糖再喝 示例代码: 1234int 苹果 = 5;苹果++; // 苹果变成6(相当于 苹果 = 苹果 + 1)int 奶茶 = 10;int 余量 = 奶茶--; // 余量=10,奶茶变成9 二、关系运算符——比大小专家...

