首先是关于字符串的一些函数
cpp
#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;
}
cpp
#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;
}
cpp
#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;
}
cpp
#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;
}
cpp
#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;
}
cpp
#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;
}
cpp
#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.7V

3 放止浪涌
防止尖锋电流
4 发光
三极管
开漏输出:在集电极加一个上拉电阻

线与

一 反馈电阻
电阻反馈 连接输出和输入
二 上拉和下拉电阻
用于数字电路
下拉电阻,去接地,让平时状态电位是低

上拉相反
就是提高电路的稳定性
有平时功耗
阻值小是强上拉,阻值大是若上拉
会有延迟问题,驱动能力要考虑,也可以用于阻抗的匹配
三 最大输出功率
电源内阻 = 负载电阻

四 0欧姆电阻
并非没有阻值
1 跨接电阻
2 预留电阻点位
3 调试电路,接万用表
4 单点接地,连接接地的两块区域
5 熔断电阻 50mΩ一下
五负电阻
U越大I越小