自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 03-51单片机定时器和串口通信

51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。串行通信:指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。只需要少数几条线就可以在系统间交换信息,适用于计算机与计算机、计算机与外设之间的远距离通信。可以理解为只有一条通道传输,同一时间只能过一位数据;并行通信:通常是将数据字节的各位用多条数据线同时进行传送,通常是 8位、16 位、32 位等数据一起传输。

2025-01-11 23:11:31 1303

原创 02-51单片机数码管与矩阵键盘

这里就是一个微型的显示屏,规格为 2 × 16 ,可以显示两行,每行最多显示 16 个字符。我们在编写C语言代码的时候,会经常用到 printf 第三方库函数,将运行的结果打印到终端屏幕上,以进行相关的调试工作。在使用单片机的时候,我们也需要查看调试信息,就可以通过这样一块屏幕,然后写好想要的功能函数,通过头文件包含调用,达到输出显示的效果。本笔记是基于B站江科大51单片机视频学习,LCD1602具体的用法还未学习,因此使用江科大提供的模块化功能函数来实现,具体文件的获取,在江科大的网址。

2025-01-10 12:54:55 1590

原创 01-51单片机LED与独立按键

单片机,英文Micro Controller Unit,简称MCU。其内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能。我们可以依靠单片机的传感器采集相应的数据,可以通过 CPU 处理数据,还可以完成对硬件设备,如:LED,蜂鸣器,电机等的控制。单片机相当于一台微型计算机,相比于我们平时使用的电脑,有优势也有劣势:缺点:在性能上,与计算机相差甚远,处理数据的能力要远低于计算机;

2025-01-09 16:24:04 2001

原创 05-Linux系统编程之进程(下)

函数介绍功能:等待子进程终止,如果子进程终止了,此函数会回收子进程的资源。参数:pid : 参数 pid 的值有以下几种类型:pid > 0 回收指定进程号的子进程pid = 0 等待同一个进程组中的任何子进程,如果子进程已经加入了别的进程组,waitpid 不会等待它pid = -1 等待任意子进程,此时 waitpid 和 wait 作用一样pid < -1 等待指定进程组中的任何子进程,这个进程组的 ID 等于 pid 的绝对值。

2025-01-07 19:29:27 912

原创 04-Linux系统编程之进程(上)

PCB:进程控制块,程序运行时,内核为每个进程分配一个 PCB(进程控制块),维护进程相关的信息。Linux 内核的进程控制块是 task_struct 结构体,这个结构体里面存放着运行维护进程需要的所有资源。task_struct 结构体:这个结构体里面的内容很多,但很多是涉及到系统内核的一些操作,我们不需要全部了解,后续学习可能用到和需要掌握的内容主要如下:进程 id:系统会为每个进程分配唯一的 id,在 C 语言中用pid_t类型表示,其本质是一个非负整数, 进程有就绪、运行、挂起、停止等状态;

2025-01-06 21:59:01 1106

原创 07-C++派生与继承

重定义:子类继承父类的同名函数,子类会屏蔽父类的所有同名函数。代码演示:未屏蔽public:int a;Father(){}cout << "父类的func" << endl;cout << "父类的一个int 参数 func" << endl;cout << "父类的两个int 参数 func" << endl;运行结果父类的func父类的一个int 参数 func父类的两个int 参数 func。

2025-01-05 14:59:28 931

原创 06-C++类和对象强化

string 类是 c++ 里一个字符串操作相关的类,简化了一些复杂的字符串操作。

2025-01-04 14:35:04 1311

原创 05-c++类和对象(下)

前面学习的类中,只能通过该类的公共方法访问私有数据。而如果将某个函数设置为类的友元,那么这个函数就可以直接访问该类的私有数据,破坏了类的封装性,只在某些特定的情况下使用。友元的分类:普通全局函数作为友元、类的某个成员函数作为友元、整个类作为友元。关键字:friend。

2025-01-03 20:45:55 1288

原创 04-C++类和对象(中)

对象数组:本质上是数组,只是数组中每个元素是对象。代码演示// 省略类的代码,还是使用上面的 class Data// 创建一个对象数组cout

2025-01-02 20:21:23 1055

原创 03-C++类和对象(上)

我们前面定义类的时候,都会设置一个给对象初始化的函数,创建对象以后再手动调用,其实 c++ 类里有可以主动调用的初始化函数,叫做构造函数。构造函数:类实例化对象的时候自动调用。构造函数的本质功能就是初始化对象中的数据成员。构造函数名和类名称相同,没有返回值类型,连 void 都不可以,可以有参数,可以重载,因为创建对象是在类外创建,构造函数在创建对象的时候调用,相当于要在类外调用构造函数,因此构造函数权限为 public。代码演示// 定义一个类class Dataprivate:int a;

2025-01-01 20:03:28 1199

原创 01-计算机网络介绍

基于C语言的Linux网络编程,基本的网络编程知识,TCP/IP协议,原始套接字,C/S开发,B/S开发

2024-12-31 16:04:39 1096

原创 03-系统调用

在 Linux 系统中,不仅仅是我们平时认为的文本文件、C语言文件才叫文件。在系统看来,一切设备皆文件。操作系统会用一个非负整数来标示进程已经打开的文件,这个非负整数就叫做文件描述符。操作系统会为每一个进程默认打开3个文件描述符:即 0 1 20:代表标准输入设备,如电脑的键盘,可以通过 scanf 默认获取键盘输入;1:代表标准输出设备,如终端屏幕,可以通过 printf 默认将数据输出到终端;2:代表标准错误输出设备,如C语言中用到的 perror 能打印错误信息。

2024-12-30 20:47:13 1173

原创 02-shell 脚本语言

shell 既是应用程序(shell 解析器),又是程序设计语言(shell 脚本语言)。常见的 shell 解析器有:sh、ash、bash通过命令查看默认解析器/bin/bash # 解析器edu@edu:~$ env # 查看系统环境变量TERM=xtermUSER=edu......说明:当前系统默认的解析器是 bash 解析器;shell 里面查看某个变量的值,需要在变量名前加 $ 美元符号;env 命令用于查看系统的环境变量;

2024-12-29 18:45:18 1077

原创 02-c++对c的扩展(下)

先想好要起的别名是什么,&和别名结合代表取别名;给谁取别名,就先定义谁;然后定义引用的时候,直接将提前定义好的变量赋值给它,引用必须要初始化。由关键字 inline 修饰的函数称为内联函数,在定义函数的时候就要加 inline。代码演示// 定义内联函数cout << "计算结果:" << addFunc(10, 20) << endl;cout << "计算结果:" << addFunc(15, 25) << endl;

2024-12-28 17:18:50 1229

原创 01-c++对c的扩展(上)

命名空间:命名空间的本质是为了防止命名冲突,给符号常量、变量、函数、结构体、枚举、类和对象加一个外壳。如两个相同名字的变量 num ,DATA::num 和 NUM::num 是不一样的。代码演示// 定义一个命名空间cout << "这是命名空间AA里的func函数!" << endl;AA::func();运行结果num = 100这是命名空间AA里的func函数!说明:命名空间只能在全局范围内定义;命名空间里面的成员可以是普通变量,也可以是函数,或其它类型。

2024-12-27 11:22:07 1762

原创 01-linux基础命令

命令 选项 参数命令 :就是命令名;选项:一般以开头 比如:-a -p -r 等扩展命令的功能;参数:描述命令的目标,如我们要打开一个文件的话,参数就是要打开的文件名;可以只有命令,没有选项和参数,选项和参数只是辅助功能,按需求加上。

2024-12-26 19:14:59 1440

原创 15-makefile

makefile 是一个编译指令的脚本,里面记录了一条条编译指令,用于描述程序的编译规则;Makefile 文件里面的编译指令是根据我们自己写的程序,编写的编译规则。make -f 自定义文件名在终端输入 make 命令时默认在工作目录中寻找名为 GNUmakefile、makefile、Makefile 的文件作为 makefile 输入文件,但如果我们不按照上面的文件名命名,而是修改为自定义的文件名,那么就需要在 make 命令后面加上我们自定义的文件名,如:但一般不建议这样做。定义格式。

2024-12-25 21:24:32 1125

原创 14-C语言多文件编程

前面编译过程中已经提到了,宏在预处理阶段会被替换成宏所对应的常量数据,而在编译阶段才会进行语法检查;如果代码中宏的使用发生了错误,是没法定位到错误语句的;同时,也可以通过宏来定义数组。代码演示10int main()return 0;运行结果40之前我们在定义数组的时候,[]里只能传整数常量,这里通过宏也可以定义成功,因为宏的预处理阶段就替换成了对应的整数常量了,编译阶段进行语法检查不会有问题。定义宏的时候,不要在末尾加分号;。同时还可以通过另外一种方法,在linux。

2024-12-24 20:36:08 1128

原创 13-C语言文件操作

我们在使用printf函数打印数据的时候,并不是直接将数据输出到终端屏幕的,而是输出到缓冲区,再刷新到终端。因为内存的读写速度较快,往磁盘文件中操作数据的时候,先要在磁盘中找到文件,打开文件,读写操作,依次循环读写数据,比较消耗时间,速率会受到磁盘读写速率的限制。因此,有了缓冲区,先将数据输出到缓冲区,再连续刷新到磁盘文件。缓冲区的目的就是为了提高访问效率。

2024-12-23 20:08:06 1229

原创 12-C语言单向链表

链表节点类型定义和结构体一样,只不过分为了数据域和指针域,指针域是一个结构体指针成员。代码演示// 定义数据域int num;// 定义指针域}STU;

2024-12-22 20:43:55 1277

原创 11-C语言结构体(下篇)

结构体类型 *指针变量名 = &结构体变量代码演示int main()STU jack;// 键盘输入为结构体成员赋值printf("请输入(姓名 年龄 分数):");// 访问结构体成员printf("我叫:%s,今年%d岁,考了%.2f分\n", jack.name, jack.age, jack.score);printf("我叫:%s,今年%d岁,考了%.2f分\n", (*p).name, (*p).age, (*p).score);

2024-12-20 17:07:40 1459

原创 10-C语言结构体(上篇)

定义的结构体类型不占用空间,它只是一个类型,相当于一个模板,通过这个模板创建的一个个结构体变量才是实实在在占用空间的。代码演示// 定义结构体类型struct stuint age;// 定义结构体变量说明在C语言里struct stu看成一个整体叫做结构体类型,定义结构体变量的时候struct也不能省,c++可以省略;{}里面的变量叫做结构体的成员,jack叫做结构体变量。代码演示// 定义结构体类型struct stuint age;}jack,rose;

2024-12-19 17:21:55 994

原创 09-C语言格式化字符串操作

代码演示// 50return 0;别名定义步骤:int num;;。代码演示*p = 10;案例:下面代码p1,p2和p3,p4有什么区别int// 宏替换相当于:int *p1, p2;// 起别名,将int * 看成一个整体,相当于:int *p3, *p4return 0;答案:p1是指针变量,类型为int *;p2是普通变量,类型为int;p3,p4都是指针变量,类型为int *。

2024-12-18 16:31:49 1941

原创 08-C语言字符串操作函数

注意:这些字符串操作函数的前n个的起点不一定是从第一个字符开始,而是要看指针指向哪个位置;字符串的末尾是遇到的第一个’\0’的位置。可以将源字符串的指定起点到遇到的第一个’\0’之间的内容,拷贝到目的字符串的第一个’\0’的后面。留有足够的空间,函数不会自动判断目标空间的大小,空间不够拷贝的时候可能越界。测量一个字符串的长度,默认遇到’\0’结束,不包括’\0’。:切割字符集合,返回切割得到的字符串的总数量。:指针数组:保存切割得到的字串的首元素地址;参考以下的函数名字以及参数,完成相应的要求。

2024-12-17 17:32:20 495

原创 07-C语言动态内存

前面我们定义变量的时候,通过类型名+变量名定义,系统会根据给定的数据类型在栈区或全局区申请相应大小的空间,同时可以通过变量名找到存储数据的内存地址。堆区空间需要我们通过函数手动申请并给定空间的大小,并且堆区空间是没有变量名的,需要我们通过一个指针变量保存申请的堆区空间的地址,用完要记得通过free()释放。如果我们不通过指针变量保存,就没法通过free()释放,会造成内存泄漏。堆区空间是在程序运行过程中,根据需要申请的,所以又叫动态空间。

2024-12-16 15:57:40 1074

原创 06-C语言指针(函数篇)

前面函数学习部分,当普通变量作为函数的参数的时候,我们想要在函数的内部修改外部变量的值不成功。100。

2024-12-16 12:00:05 1034 1

原创 05-C语言指针(数组篇)

字符指针变量:只是保存字符串的首元素地址,字符串本身在文字常量区,不同通过指针变量给字符串赋值,字符指针变量存储在栈或全局区。数组指针:本质上是一个指针,只不过指针保存了数组的首地址(注意:这里是数组首地址,不是数组首元素地址)。方便理解记忆:因为 [] 的优先级高于 *,因此它本质上是一个数组,只是数组的每个元素为。指针的指针:本质上是一个指针,只不过这个指针保存了另外一个指针的内存地址。字符指针数组:本质上是一个数组,只不过数组的每一个元素为字符指针。指针数组:本质是一个数组,数组的每一个元素是指针。

2024-12-12 20:59:52 644

原创 04-C语言指针(基础篇)

/ 定义语法:指针指向的数据类型 *指针变量名int *p1;// 定义了一个指针变量,用于保存 int 类型数据的地址// 步骤// 先确定我们要保存什么类型数据的地址double num;// 定义了一个double类型的变量// 接着通过 (* + 指针变量名)替换普通变量名即可double *p2;return 0;

2024-12-11 19:14:23 1200

原创 03-C语言函数

函数包括:用户自定义的函数、库函数(c/c++库、其它第三方库)、系统调用(linux内核提供的可访问内核资源的函数接口)。函数的定义:函数的具体功能的实现。// 定义一个函数:用于计算两个数的和// int-函数返回值类型;add_func-自定义函数名;int a,int b-函数的形参,int是函数形参的类型,a是自定义的形参名// 函数形参:函数内部可以通过形参来访问函数外部的数据,形参在定义的时候不占用内存{ // {}里面是函数体return ret;

2024-12-10 21:57:58 885

原创 02-C语言数组

数组:用一段连续的空间存储多个相同类型的数据的容器,叫做数组。数组的定义。

2024-12-09 21:26:34 1168

原创 01补充-进制转换和数据存取

/ 未注明,默认为有符号数// unsigned 修饰的为无符号数。

2024-12-08 20:51:50 1142

原创 01-C语言数据类型及语句

代码:int main()// char 为字符类型printf("char大小:%zu字节\n", sizeof(char));// short 为短整型(整形相当于常规理解的整数)printf("short大小:%zu字节\n", sizeof(short));// int 为整形printf("int大小:%zu字节\n", sizeof(int));// long 为长整型printf("long大小:%zu字节\n", sizeof(long));

2024-12-07 20:56:59 1084 1

空空如也

空空如也

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

TA关注的人

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