自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 2-1 基本放大电路

需要基本电路分析中的戴维南等效电路

2025-03-25 22:11:31 685

原创 ELSE、基础算法

for(i=min;i<=max;i++){flag=1;if(i<=2)flag = 0;for(j=2;j<sqrt(i);j++){flag = 0;count++;

2025-03-11 09:15:00 105

原创 十三、静态库 && 动态库

因为如果调用多个他.c 麻烦(例如不同公司间的软件开发合作,不能提供代码,只能提供软件.a) ——> 引进库(库也是文件,也是代码) ——> 做成一个静态库。

2025-03-11 09:00:00 564

原创 十二、文件读写

关键问题是同时读写,只要你使用标准库的I/O操作,同时读写的结果都是没有定义的,不管是像楼主的代码那样使用两个文件指针,或者使用fseek。如果是分别用fopen打开的两个指针,也存在这个问题,因为你没有办法掌握I/O系统刷新的确切时间,可能你的写操作生效以后,读操作可以得到更新后的数据,或者也可能由于缓冲的原因,前一次读操作已经把剩余内容全部读到缓冲区中,这样读操作得到的数据是前一次的快照,不能反映最新的变化。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。

2025-03-10 09:00:00 634

原创 十一、宏定义

一般形式:#define 宏名 宏体一般定义在函数外部,可在任意处定义#undef 宏名 // 可终止宏名的作用域引号中的内容与宏名相同也不置换功能(宏展开):预编译时,用宏体替换宏名 ---- 不作语法检查生命周期:从声明处开始,若无#undef,则到程序终止为止,反之,则在#undef处结束宏定义可以嵌套,不能递归宏定义时,需要使用必要的括号 ---- 宏展开为不作语法检查的展开,若无括号,程序读取语句优先级可能会不符合逻辑一般形式:#define S(a,b) (a)*(b)

2025-03-09 09:00:00 276

原创 十、链表操作

1、当需要存储一个比较大的数据时,如果使用数组,就意味着需要计算机分配一个连续的一整块内存空间系统会分配空间失败。2、链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。1、链表(linked list)是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成。双向链表的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针。1、头结点的数据类型和首节点的类型是一摸一样。尾节点:存放最后一个有效数据的节点。一个是存储数据元素的数据域。首节点:存放第一个有效数据的节点。

2025-03-09 02:30:00 421

原创 九、结构体

为了模拟一些复杂的事物,把一些基本的数据类型组合在一起,形成了一种新的复合数据类型。//第一种:经常使用,也是推荐的一种。int age;char sex;​//第二种int age;char sex;}st2;​//第三种structint age;char sex;}st3;​。

2025-03-08 16:55:40 903

原创 八、排序算法

for(i=0;i < len-1;for(j=0;break;

2025-03-08 15:39:56 406

原创 七、数组指针 && 指针数组

(p+1)单独使用时表示的是第1行数据,放在表达式中会被转换为第1行数据的首地址,也就是第1行第0个元素的地址,因为使用整行数据没有实际的含义,编译器遇到这种情况都会转换为指向该行第0个元素的指针;指针数组和二维数组指针有着本质上的区别:指针数组是一个数组,只是每个元素保存的都是指针,以上面的p1为例,在32位环境下它占用4×5=20个字节的内存。p指向的数据类型是int[4],那么p+1就前进4×4=16个字节,p-1就后退16个字节,这正好是数组a所包含的每个一维数组的长度。

2025-03-08 15:31:49 366

原创 六、指针操作

间接寻址 → 用指针把变量的地址保存上,后通过指针指向的地址找到变量的存储空间,修改其值、一级指针 存的是变量的地址、二级指针 存的是一级指针的地址、如果通过指针改变变量的值的时候是用*来取内容进行改变。arr[10] 数组的名便可代表此数组的首地址,且arr为地址常量,不可在声明后,直接 arr = "ad" 赋值,所以赋值时,不可 p = &arr,而是 int *p = arr;寻址能力是由系统的硬件决定的,也。简单的总结下,16位的2字节,32位的4字节,64位的8字节,由系统的寻址能力决定。

2025-03-08 15:25:32 866

原创 五、数组维度

在内存中,数组的分布是一维线性的,整个数组占用一块连续的内存连续性、同类型、顺序存储、可以通过下标去访问每一个成员。

2025-03-07 21:52:35 330

原创 四、输入输出函数

C 语言中 printf 输出 double 和 float 都可以用占位符 可以混用,而 double 可以额外用。而 scanf 输入情况下 double 必须用,float 必须用不能混用。

2025-03-05 11:45:00 640

原创 编译gcc

编译链原理

2025-03-05 11:00:00 89

原创 三、程序结构语句

Switch -case 若 case 1:case 2:执行的语句一致,可写成 case 1: case 2:语句;x) 是为了避免 if(x = 0) 的恒定情况。未加 { } 的 if-else 语句,会以最近的 if-else 语句配对,切忌不加 {}结构内可以存在死循环 ——> while(1) 、for(;单分支 :if( 表达式 - 可为实数 ) 语句;if(xxxx) 语句1。if(xxxx) 语句3。

2025-03-05 11:00:00 657

原创 二、标识符

= 是关系运算符 比较两个字符是不是相等 ​ = 赋值运算符 ,赋值 ​ 1、a = 3 if(b = a)// if(3) 条件为真 ​ 2、a = 3 ,b = 4 if(b == a)// if(0) 条件为假 ​!(sizeof(long int ) = 12) ​ strlen(){头文件为 <string.h>} 求字符串的大小,但是他和sizeof不同,他求的是实际的字符的大小,不包括 \0 的大小。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

2025-03-04 20:33:05 899

原创 一、数据类型

合法的:’3’ ’a’ ‘b’ ‘\n’ ‘\’ ‘\b’ ‘\t’ ‘\r’ ‘\f’ ‘\’’ ‘\”’ ‘\ddd’ ‘\xhh’ 其中的ddd是1~3个 八进制数所代表的字符,hh是1到2个十六进制数所代表的字符。具有变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。二进制序列用以表示计算机、电子信息数据容量的量纲,基本单位为字节B,字节向上分别为KB、MB、GB、TB,每级为前一级的1024倍,比如1KB=1024B,1M=1024KB。char n[5];

2025-03-04 20:13:00 810

原创 C语言总结目录-Unix向

C语言总结目录表

2025-03-02 13:57:15 98

原创 十、暂时放置知识点

例如,在土耳其语的区域设置中,大写的’i’是’İ’,而不是’I’。在C++中,当你对一个较小的数据类型(如uint8_t或uint16_t)进行位移操作时,位移的数量是在这个较小的数据类型的范围内进行的。当你将一个较小的数据类型转换为一个较大的数据类型(如uint64_t)后再进行位移操作,位移的数量就是在这个较大的数据类型的范围内进行的。此外,标准模板库(STL)提供了各种通用的数据结构和算法,例如向量、列表、映射、排序算法等,可以在不同的环境下使用,而不用担心特定平台的差异性。

2025-02-27 10:00:00 587

原创 八、多线程

以上函数在使用时需要配合线程属性对象(pthread_attr_t类型)使用。例如,你可以使用pthread_attr_init函数初始化一个线程属性对象,然后使用pthread_attr_setdetachstate函数设置其分离状态属性,最后在创建线程时使用这个属性对象。当不再需要使用线程属性对象时,应使用pthread_attr_destroy函数销毁它,以释放其占用的资源。pthread_attr_*类函数是用于操作线程属性对象的函数。设置线程的调度策略为。使用属性对象创建线程。

2025-02-26 10:00:00 633

原创 九、C/C++ time 处理集合

是的,C和C中的tm结构体中的tm_year字段是从1900年开始计数的。例如,如果tv_sec是1234567890,tv_usec是123456,那么当前的时间就是1234567890.123456秒(从1970年1月1日00:00:00 UTC开始计算)。在gettimeofday函数返回的timeval结构体中,tv_sec字段表示的是自1970年1月1日00:00:00 UTC(UNIX纪元)以来的秒数,而tv_usec字段表示的是微秒数(百万分之一秒)。输出年、月、日、小时、分钟和秒。

2025-02-26 10:00:00 913

原创 七、std:: 命名空间(规整)

在这个示例中,我们使用std::bind将greet函数的第一个参数绑定为"Hello",并使用std::placeholders::_1来表示占位符,以便在调用greetFunc时传入第二个参数。这个函数通常用于标准库中的容器,比如std::vector,std::list,std::string等。总的来说,::std::remove_if允许你使用一个谓词函数来对容器中的元素进行条件过滤,然后以一种高效的方式将满足条件的元素移动到容器末尾,从而方便后续的删除操作。

2025-02-25 21:51:54 501

原创 六、多态(Polymorphism)

例如,甲乙丙 3 个班都是高二年级,他们有基本相同的属性和行为,在同时听到上课铃声的时候,他们会分别走向 3 个不同的教室,而不会走向同一个教室。又如在 winows 环境下,用鼠标双击一个对象(这就是向对象传递一个消息),如果对象是一个可执行文件,则会执行此程序,如果对象是一个文本文件,由会启动文本编辑器并打开该文件。父类对象强转为子类对象后,访问从父类继承 下来的部分是可以的,但访问子类的部分,则会发生越界的风险,越界的结果是未知的。在替代之后,派生类对象就可以作为基类的对象使用。

2025-02-25 21:48:40 1209

原创 五、继承与派生

如果某派生类的多个基类拥有同名的成员,同时,派生类又新增这样的同名成员,在这 种情况下,派生类成员将 shadow(隐藏)所有基类的同名成员。多个父类中重名的成员,继承到子类中后,为了避免冲突,携带了各父类的作用域信息, 子类中要访问继承下来的重名成员,则会产生二义性,为了避免冲突,访问时需要还有父类的作用域信息。为此,c++提供了,虚基类和虚继承机制,实现了在多继承中只保留一份共同成员。私有继承(private):基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类 的私有成员。

2025-02-24 21:43:27 1013

原创 四、运算符重载(Operator OverLoad)

*“的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解"就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为"解引用”。其实现就是类中实现一个 operator(),重载(),这个类就有了类似函数的行为,就是一个仿函数类了。一个操作符的左右操作数不一定是相同类型的对象,这就涉及到将该操作符函数定义为谁的友元,谁的成员问题。=,~=,%=,>>=,<<=”建议成员,其它双目则建议为友元。“=,(),[],->”,只能是成员。

2025-02-24 21:16:03 948

原创 三、友元(friend)

采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一 般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不 是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该类的友元函数。友元的作用是提高了程序的运行效率(即减少 了类型和安全性检查及调用的时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可 以访问类的私有成员。友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包 括私有成员和保护成员)。

2025-02-23 14:08:36 244

原创 二、 类和对象

其实就是对象里边如果还有对象,浅拷贝之后,被拷贝的对象里边的这个对象只是个引用。在main()函数调用foo()之前,会在自己的栈帧中开辟一个临时空间,该空间的地址作为隐藏参数传递给foo()函数,在需要返回A对象的时候,就在这个临时空间上构造一个A a。浅拷贝 如果当数组或对象中的值是`基本类型数据`,那拷贝后的数据和原数据是完全没有关联,且互不影响的两个数据, 如果数组或对象的值是`引用类型数据`的话,拷贝后的数组或对象中的引用类型的值跟原数据中的引用类型的值,还是会保持共同的内存地。

2025-02-23 13:49:45 971

原创 一、C++入门基础

在上面的示例中,MyClass 类中的转换运算符 operator int() 被标记为 explicit,这意味着在其他地方的代码中,不再允许隐式地将 MyClass 类的对象转换为 int 类型,需要显式地使用转换运算符进行类型转换。在现代C++中,推荐使用内联汇编的替代方案,比如使用C++的内联汇编扩展,如GNU C++的__asm__关键字或者Microsoft Visual C++的__asm关键字,以提高可移植性和代码的可读性。在C++中,asm是一个关键字,用于嵌入汇编代码到C++程序中。

2025-02-23 10:00:00 727

原创 C++语言总结目录

指向类成员变量及函数的指针(静态)指向类成员变量的指针(非静态)指向类成员函数的指针(非静态)函数操作符(“()”)派生类的赋值运算符重载。派生类成员的标识和访问。继承关系(公、私、保)派生类析构函数的语法。

2025-02-22 17:57:41 471

原创 C/C++语言总结

C:

2025-02-22 17:25:00 108

原创 模电学习——场效应管(FET)

如果真断了,没有电流了,也就是没有压降了,空隙会自动打开。BJT是双极性器件,有少子参与,受温度影响大。出厂的时候,会把源极s 和 衬底B 链接在一起,一旦衬底是单独的没连(四个极),那么d.s可互换。沟道越宽,ds两极之间的电阻越小,反之越大。控制上,FET通过电场控制,几乎没电流。,MOS FET,在此基础上 -> CMOS。吸引,ds两极之间形成 沟道,沟道中自由电子是多子,所以是N沟道。的电流,也就是成比例(只在恒流区),也就是场效应管的放大。,图线会上移,因为U_{gs} 越大,沟道越宽,

2024-11-24 23:56:29 967

原创 杂乱收集待归纳

当使用栅极驱动IC的负载开关需要阻止电流反向流入负载开关的功能时,两个N沟道MOSFET在外部背对背连接(共源结构或共漏结构)。此功能即称为反向电流阻断。

2024-11-18 14:10:00 173

原创 模电学习 —— 双极晶体管 BJT

此时,在基区中,来自发射区 扩散的 大量的自由电子经过基区向集电结扩散,同时基区中会发生复合。因为基区掺杂浓度低且厚度薄,而且基区的多子是空穴,那么只会有少数的自由电子经过基区时发生复合,而且在复合时,基区会在外电场的作用下重新产生新的自由电子。集电结是反偏的,也就是说,集电结反偏的时候,会向下产生一个很大的电场;在图中,发射结正偏,那么集电结必然是反偏,因为c处是两节电池的电压,N->P不导通。,因为集电结的反偏,产生了漂移运动,产生了电流,相当于是反偏饱和电流。,在基极开漏的时候,C和E之间的电流。

2024-11-17 22:09:21 1747

原创 模电学习 —— PN结&二极管&&工作伏安特性

PN 结物理特性 + 半导体二极管 正反向特性学习

2024-11-03 00:36:19 1307

原创 STM32学习——IIC

Inter Integrated Circuit ,集成电路总线,是一种同步(有时钟) 串行 半双工 通信总线。IIC总线 IIC协议,两者都是指IIC,总线偏硬件,是传输数据通道,协议偏软件,是传输数据的规则。EEPROM是一种掉电数据不丢失存储器,存储配置信息,系统重新上电时就可以加载。AT24C02 是一个 2K bit 的EEPROM存储器,使用 IIC通信方式。02就是2k bit。

2024-10-08 22:53:19 1267

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除