首先是关于字符串的一些函数#include stdio.h #include string.h int main() { //strspn函数怎么用 //函数说明 //strspn函数返回字符串str1中第一个不在字符串str2中出现的字符下标。 char *str 123456789; char *str2 23; printf(%d\n, strspn(str, str2)); return 0; }#include stdio.h #include string.h int main() { #if 0 //strstr函数怎么用 //函数说明 //strstr函数返回字符串str2在字符串str1中第一次出现的位置。 char *str 123456789; char *str2 23; printf(%s\n, strstr(str, str2)); #endif //使用strstr函数统计字串的个数 char *str 123223323423; char *str2 23; int count 0; char *p str; while(p!NULL) { p strstr(p, str2); if(p!NULL) { count; p strlen(str2); } } // while ((p strstr(p, str2)) ! NULL) // { // count; // p strlen(str2); // } printf(%d\n, count); return 0; }#include stdio.h #include string.h int main() { //strtok函数怎么用 //函数说明 //strtok函数将字符串str1分割成由字符串str2分割的多个部分并返回分割后的第一个部分。 char str[] i am from china; // 使用数组而非字符串字面量允许修改 char *delim ; // 分隔符字符串 char *result strtok(str, delim); while (result ! NULL) { // 检查返回值 printf(%s\n, result); result strtok(NULL, delim); // 继续分割 } return 0; }#include stdio.h #include string.h //实现strtok_r函数 char* strtok_r(char* str, const char* delim, char** saveptr) { if (str NULL) { str *saveptr; } if (str NULL) { return NULL; } while(delim ! NULL) { if (*delim *str) { *str \0; *saveptr str 1; return str; } delim; } } int main() { char str[] i am from china; // 使用数组而非字符串字面量允许修改 char *delim ; // 分隔符字符串 char *saveptr NULL; char *result strtok_r(str, delim, saveptr); while (result ! NULL) { // 检查返回值 printf(%s\n, result); result strtok_r(NULL, delim ,saveptr); // 继续分割 } return 0; }#include stdio.h int add(int a, int b) { return a b; } int main() { //函数指针的作用 //函数指针是指向函数的指针可以通过函数指针调用函数。 int (*p)(int, int) add; printf(%d\n, p(1, 2)); //1.隐藏接口 //2. 间接体现多态 return 0; }#include stdio.h int add(int a, int b) { return a b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int main() { //函数指针数组怎么用 //函数指针数组是指一个数组数组中的每个元素都是一个函数指针。 int (*p[3])(int, int) {add, sub, mul}; printf(%d\n, p[0](1, 2)); printf(%d\n, p[1](1, 2)); printf(%d\n, p[2](1, 2)); return 0; }#include stdio.h //什么是可变参数 /** * 实现原理 * 变量压栈是连续的 * C语言提供了三个宏定义 * va_start(ap, n) 初始化ap * va_arg(ap, type) 获取参数 * va_end(ap) 结束 */ #include stdarg.h int add(int n, ...) //以一个参数n表示可变参数的个数 { int sum 0; va_list ap; va_start(ap, n); for (int i 0; i n; i) { sum va_arg(ap, int); } va_end(ap); return sum; } int main() { //可变参数怎么用 //可变参数是指一个函数可以接收任意个数的参数。 printf(%d\n, add(3, 1, 2, 3)); return 0; }电容的6大核心作用1滤波稳定电压滤除杂波应用在电源引脚旁边接一个100nf的电容来滤波稳压2 耦合传递交流信号隔离直流3 降压 利用容抗实现低成本降压4 定时与电阻配合实现时间控制T RC 在电路中电容由充电到充满到放电是可以通过控制R和C来控制时间的5 旁路 为高频信号提供捷径原理 电容通高频对高频信号的容抗小6 储能 短时间内释放大电流电感电感就是将导线绕制成线圈形状当电流流过时在线圈电感两端就会形成较强的磁场。由于电磁感应的作用会对电流的变化起阻碍作用。因此电感对直流呈现很小的电阻近似于短路对交流呈现的阻抗较高其阻值的大小与所通过交流信号的频率有关。同一电感元件通过交流电流的频率越高呈现的阻值越大。电感的两个重要特性1、电感对直流呈现很小的电阻近似于短路对交流呈现的阻抗与信号频率成正比交流信号频率越高电感呈现的阻抗越大 电感的电感量越大对交流信号的阻抗越大。2、电感具有阻止电流变化的特性流过电感的电流不会发生突变根据电感的特性在电子产品中常作为滤波线圈、谐振线圈 等。电感的功能及作用1、电感的滤波功能LC滤波电路在电感滤波中纹波系数与负载电阻成正比另一方面在电容滤波中它与负载电阻成反比因此如果将电感滤波与电容结合起来纹波系数将几乎与负载滤波无关。它也被称为电感输入滤波电路、扼流输入滤波电路、RC滤波电路。在该电路中扼流圈与负载串联为交流分量提供高电阻并允许直流分量流过负载。负载两端的电容并联连接过滤掉流过扼流圈的任何交流分量。通过这种方式就可以得到整流并通过负载提供平滑的直流电。电感滤波电路这种类型也叫做扼流过滤电路由插在整流器和负载电阻R之间的电感组成。整流包含交流分量和直流分量。当输出通过电感时为交流分量提供高电阻而对直流分量没有电阻。因此整流输出的交流分量被阻断只有直流分量到达负载。2、电感的谐振功能电感通常和电容并联构成LC谐振电路主要用来阻止一定频率的信号干扰。天线感应射频信号经电容Ce耦合到由调谐线圈L1和可变电容CT组成的谐振电路经L1和CT谐振电路的选频作用把选出的广播节目载波信号通过L2耦合传送到高频放大器。图中的黄色圈起来的部分为CT、L1构成的谐振电路进行调谐选台。3、LC串联、并联谐振电路LC串联谐振电路将电感与电容串联可构成串联谐振电路如下图所示。该电路可简单理解为与LC并联电路相反。LC串联电路对谐振频率信号的阻抗几乎为0阻抗最小可实现选频功能。电感和电容的参数值不同可选择的频率也不同。LC并联谐振电路电感与电容并联能起到谐振作用阻止谐振频率信号输入。电感对交流信号的阻抗随频率的升高而变大。电容的阻抗随频率的升高而变小。电感和电容并联构成的LC并联谐振电路有一个固有谐振频率即共谐频率。在这个频率下LC并联谐振电路呈现的阻抗最大。利用这种特性可以制成阻波电路也可制成选频电路。二极管整流:2 稳压::导通后两侧的压降大约0.7V3 放止浪涌防止尖锋电流4 发光三极管开漏输出在集电极加一个上拉电阻线与一 反馈电阻电阻反馈 连接输出和输入二 上拉和下拉电阻用于数字电路下拉电阻去接地让平时状态电位是低上拉相反就是提高电路的稳定性有平时功耗阻值小是强上拉阻值大是若上拉会有延迟问题驱动能力要考虑也可以用于阻抗的匹配三 最大输出功率电源内阻 负载电阻四 0欧姆电阻并非没有阻值1 跨接电阻2 预留电阻点位3 调试电路接万用表4 单点接地连接接地的两块区域5 熔断电阻 50mΩ一下五负电阻U越大I越小