- 博客(90)
- 收藏
- 关注
原创 c#基础010(程序结构)
C#程序结构主要由命名空间声明、类、方法、属性、Main方法和注释组成。.cs文件包含这些基本元素,程序执行从Main方法开始。编译运行可使用Visual Studio创建控制台应用程序,选择最新框架版本。C#是一种面向对象语言,使用using引入命名空间,class定义类,包含成员变量和方法。数据类型分为值类型、引用类型和指针类型,其中值类型直接从System.ValueType派生。C#支持顶级语句特性,允许直接编写代码而不需定义类和方法,使代码更简洁。注意标识符区分大小写,语句需以分号结尾,且程序入口
2025-06-05 21:02:50
1130
原创 c#基础09(类与对象)
摘要 本文介绍了面向对象编程的基本概念及C#中的实现方式。主要内容包括: 面向对象核心特性:封装、继承、多态三大特性,强调C#中一切皆为对象。 封装机制:通过访问修饰符(public/private/protected等)控制成员可见性,实现数据隐藏和安全性。 类与对象: 类作为对象模板,包含字段、属性、方法等成员 对象是类的具体实例 详细说明字段与属性的区别及简写语法 构造方法:用于初始化对象并返回地址,支持无参和有参构造器。 代码示例:展示Person类的定义、对象创建、属性访问和方法调用等实际操作。
2025-05-29 16:43:11
717
原创 c#基础08(数组)
摘要 本文介绍了C#中数组和集合的基本概念及使用方法。数组是存储相同类型元素的固定大小集合,通过索引访问元素。主要内容包括数组的声明、初始化、赋值及访问方式。集合类则提供了更灵活的数据存储结构,如ArrayList(动态数组)、Hashtable(哈希表)、Stack(堆栈)等,支持动态调整大小和多样化操作。重点讲解了ArrayList的常用属性和方法,如添加元素、排序、遍历等。文章还通过代码示例演示了数组和集合的具体操作,如循环遍历、排序输出等。
2025-05-27 09:38:34
900
原创 c#基础07(调试与异常捕捉)
在C#中程序调试主要指在Visual Studio2022中调试程序,包括设置断点、监视断电,以及逐语句、逐过程、使用一些辅助窗口来调试程序。C# 以 try 和 catch 块的形式提供了一种结构化的异常处理方案。很多时间,写代码不能一撸到底,中间都是经历过无数次的调试,才能正常正确的运行起来。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。如果你觉得没必要再调试下去了,则可以点击 “继续” 按钮,则程序会取消挂起遇到直到下一个断点。,程序则会在你打断点的地方挂起。
2025-05-26 10:44:14
789
原创 c#基础06(流程控制)
本文介绍了C#中的流程控制语句,主要包括选择结构和循环结构两大类。选择结构详细讲解了if/else语句和switch语句的语法规则及使用场景,通过示例代码展示了具体实现方式,并比较了二者的优缺点。循环结构部分则阐述了while、for、do...while等循环类型的语法特点,说明各类循环的条件判断时机和执行流程。文章还简要提及了循环控制语句的作用,帮助读者掌握C#程序流程控制的核心知识点。
2025-05-24 10:55:42
946
原创 c#基础05(方法)
在C#中,函数通常被称为方法,用于封装可重复使用的代码。方法的定义包括访问修饰符、返回类型、方法名、参数列表和方法体。方法可以通过值传递、引用传递(使用ref关键字)或输出传递(使用out关键字)来传递参数。值传递不影响实参,而引用传递和输出传递可以修改实参的值。方法重载允许在同一个类中定义多个同名但参数列表不同的方法。通过方法的定义和调用,可以实现代码的复用和逻辑的封装,从而提高代码的可维护性和可读性。
2025-05-23 08:33:32
738
原创 c#基础04(类型转换)
类型转换分为强制转换(显示转换)和隐式转换,按内存分类则包括装箱和拆箱。隐式转换通常发生在小类型向大类型转换时,如int转double,而强制转换则用于可能丢失信息的转换
2025-05-22 10:46:05
419
原创 c#基础03(运算符)
C#运算符是编程中用于执行各种操作的基本工具,主要分为算数、关系、逻辑、复合赋值、位运算等类别。算数运算符包括一元(如自增++、自减--)和二元(如加+、减-、乘*、除/、求余%)运算符。关系运算符(如==、!=、>、<等)用于比较两个操作数的大小或相等性。逻辑运算符(如&&、||、!)用于布尔值的逻辑操作。位运算符(如&、|、^、~、<<、>>)则直接操作二进制位。此外,C#运算符具有明确的优先级,从高到低依次为后缀、一元、乘除、加减、移位、关系
2025-05-21 08:46:19
685
原创 c#基础02(变量)
本文介绍了C#编程中的几个关键概念,包括类型转换、注释、快捷键、变量和常量。类型转换分为隐式转换和显示转换,隐式转换由编译器自动完成,而显示转换需要手动编写代码。注释分为单行、多行和文档注释,用于代码的解释和说明。文章还列举了Visual Studio中的常用快捷键,如自动对齐、智能提示、注释和取消注释等。变量部分详细介绍了数据类型,包括值类型和引用类型,以及它们的存储方式和声明方法。最后,文章提到了常量的概念,强调常量在编译时设置且不可更改。这些基础知识对于理解和编写C#程序至关重要。
2025-05-20 09:44:34
927
原创 c#基础01(.Net介绍)
.NET 是一个免费、开源、跨平台的开发平台,支持构建多种类型的应用,包括 Web、移动、桌面、游戏、物联网和机器学习等。它提供了统一的运行时、API 和语言功能,使开发者能够在不同操作系统(如 Windows、macOS、Linux、Android 和 iOS)上共享代码。.NET 平台包括 .NET Core 和 .NET Framework,其中 .NET Core 更注重跨平台和云原生开发,而 .NET Framework 则主要面向 Windows 平台。开发工具 Visual Studio 提供
2025-05-19 13:32:11
788
原创 stm32基础001(串口)
由于串口合适发数据由自己决定,不存在无效等待的问题,无需使用中断,但是串口何时接收数据不由自己决定,如果还使用轮询会存在大量无效等待,此时要是使用中断提高效率。串行通信一个方向只有一个数据通道,一次传输一位数据,适用于传输距离较长,速度要求不是很高场合。并行通信一个方向有多个数据通道,一次传输多位数据,适用于传输距离较短,速度要求很高的场合。stm32芯片上运行程序,如果主机运行了调试器,程序就会使用主机的输入输出设备,通信速率:单位时间内传输的比特数,叫做波特率(bps)全双工:数据可以同时双向传输。
2025-05-01 21:12:28
1239
原创 Qt基础009(HTTP编程和QJSON)
=JSON(JavaScript Object Notation)==是一种轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成。JSON是基于JavaScript的一个子集,尽管它是独立于语言的,且有多种语言支持。JSON常用于网络应用程序中的数据传输,尤其是在Web应用程序中与后端服务器通信。原因描述易于阅读和编写JSON的结构简单、清晰,对人类来说易于阅读和编写。轻量级数据格式相较于XML等标记语言,JSON更轻量,使用更少的符号,数据体积更小。易于解析和生成。
2025-04-25 23:24:48
1307
原创 Qt基础008(自定义控件)
是 Qt 框架中一个重要的事件类,专门用于处理绘图事件。当 Qt 视图组件需要重绘自己的一部分时,就会产生事件。窗口第一次显示时:当窗口或控件第一次出现在屏幕上时,系统会生成一个 QPaintEvent 事件,通知窗口进行自身的绘制。窗口大小改变时:当用户改变窗口的大小时,窗口的内容通常需要重新绘制以适应新的尺寸。窗口部分被遮挡后又重新显示时:如果窗口被其他窗口遮挡,然后又重新露出来,被遮挡的部分通常需要重新绘制。手动请求重绘。
2025-04-24 22:51:46
617
原创 Qt基础007(Tcp网络编程)
在QT组件中,QTcpSocket用来管理和实现TCP Socket通信,QUdpSocket用来管理和实现UDP Socket通信。总之,Socket 是实现网络通信的基础工具之一,它抽象化了网络层的复杂性,为开发者提供了一种相对简单的方式来建立和管理网络连接。:有两种主要类型的 Sockets —— TCP Socket(面向连接,可靠)和 UDP Socket(无连接,不可靠)。它是互联网协议套件的核心部分,通常与IP(互联网协议)一起使用,合称为TCP/IP。然而,由于它的这些特性,TCP。
2025-04-23 22:13:01
1029
原创 Qt基础006(事件)
事件过滤器通常是一个重写了 QObject::eventFilter() 方法的对象。这个方法会在事件传递给目标对象之前被调用。
2025-04-22 19:15:17
1079
原创 Qt基础005(文件操作后续)
是一个在 QTextEdit 中用来表示额外的文本选择和高亮的结构。如何工作结构体: QTextEdit::ExtraSelection 是一个结构体,包含了两个主要成员:QTextCursor 和 QTextCharFormat。QTextCursor 表示在文本中的一个位置或者区间,而QTextCharFormat 用于定义这个区间的格式,比如背景颜色、字体等。设置。
2025-04-20 20:37:07
1095
原创 Qt基础004(文件操作)
Qt 也允许使用静态方法直接创建和显示对话框,例如QFileDialog::getOpenFileName() ,这些方法更简单,但提供的自定义选项较少。 QTextStream 是一个功能强大的类,用于处理文本数据,特别是在需要考虑字符编码和文本格式化的情况下。通过这些特性,它提供了一种灵活而强大的方式来读写和操作文本。QFile是Qt框架种用于文件处理的一个类,它提供了读取和写入文件的功能,支持文本和二进制文件。:根据需要设置对话框的模式,如打开文件、保存文件等。:用于读取和写入数据。
2025-04-18 10:15:32
591
原创 Qt基础003(信号与槽)
概要信号(Signals):是由对象在特定事件发生时发出的消息。例如, QPushButton 有一个clicked() 信号,当用户点击按钮时发出。槽(Slots):是用来响应信号的方法。一个槽可以是任何函数,当其关联的信号被发出时,该槽函数将被调用。连接信号和槽:使用 QObject::connect() 方法将信号连接到槽。当信号发出时,关联的槽函数会自动执行 在Qt中,自定义信号与槽是实现对象间通信的一种机制。信号和槽是Qt对象通信的核心特性,使得一个对象能够在发生某种事件时通知其他对象。
2025-04-16 11:18:43
871
原创 Qt基础002(工程描述)
当你在Qt中定义一个类时,如果这个类继承自 QObject 或其子类,并且你想使用Qt的信号和槽机制、国际化、属性系统或其他Qt元对象系统提供的功能,就必须在类定义中包含 Q_OBJECT 宏。这个宏允许Qt的元对象编译器(moc)识别并处理这个类,生成额外的代码,这些代码是实现信号和槽机制以及其他元对象功能所必需的。 QApplication 是Qt应用程序的核心,它为应用程序提供了必要的环境和框架,确保GUI组件能够正常工作并响应用户的操作。它适合于更简单或专用的应用程序,不需要复杂的用户界面组件。
2025-04-13 21:16:08
460
原创 Qt基础001(简介)
Qt 是一个跨平台的应用程序和用户界面框架,用于开发图形用户界面(GUI)应用程序以及命令行工具。它最初由挪威的 Trolltech (奇趣科技)公司开发,现在由 Qt Company 维护,2020年12月8日发布QT6。Qt 使用 C++ 语言编写,支持多种编程语言通过绑定进行使用。对于许多开发者和小型企业来说,Qt 的开源版提供了一个强大且灵活的开发框架,而对于需要额外支持和专有功能的大型企业或具有特定需求的项目,商业版则提供了所需的服务和资源Qt 商业版。
2025-04-12 22:05:46
842
原创 C++基础15(右值引用&&)
要理解右值引⽤,⾸先得区分左值(lvalue)和右值(rvalue),区分⼀个表达式是左值还是右值,最简便的⽅法就是看能不能够对它取地址或对它进⾏赋值的操作:如果能,就是左值;否则,就是右值。 右值引⽤使⽤&&符号来表示,右值引⽤专⻔为右值⽽⽣,可以指向右值,不能指向左值:从性能上讲,左右值引⽤没有区别,传参使⽤左右值引⽤都可以避免拷⻉。// 声明⼀个右值引⽤a = 10;// 右值可以修改int x = 20;int y = 30;//右值通常是常量,表达式或者函数返回值(临时对象)。
2025-03-25 10:02:59
278
原创 C++14(STL)
● STL(StandardTemplate Library)即标准模板库,是⼀个具有⼯业强度的,⾼效的C++程序库。● 主要集成了常⽤的数据结构(类模板实现)和算法(函数实现)。● STL的⼀个重要特点是数据结构和算法的分离● 它不是⾯向对象的,STL主要依赖于模板⽽不是封装,继承和虚函数(多态性)。 C ++ STL ⼀共提供了六⼤组件,包括容器,算法,迭代器,仿函数,配接器和配置器,彼此可以组合套⽤。
2025-03-19 14:20:12
738
原创 C++13(智能指针)
智能指针其实是⼀个类,实质就是重载了->和*操作符的类,由类来实现对内存的管理,确保即使有异常产⽣,也可以通过智能指针类的析构函数完成内存的释放。智能指针的⾏为类似常规指针,重要的区别在于智能指针负责⾃动释放所指向的对象。STL提供给我们提供了四种智能指针类型,除了下边列出的三种,还有C++98标准auto_ptr智能指针,C+11已将将其摒弃。C++11 标准新引⼊了 这 3 个智能指针:shared_ptr : 允许多个智能指针指向同⼀个对象。
2025-03-17 11:46:13
763
原创 C++12(虚继承)
假如类 A 有⼀个成员变量 a,那么在类 D中直接访问 a 就会产⽣歧义,编译器不知道它究竟来⾃ A -->B–>D 这条路径,还是来⾃ A–>C–>D 这条路径。类 A 派⽣出类 B 和类 C,类 D 继承⾃类 B 和类 C,这个时候类 A 中的成员变量和成员函数继承到类 D 中变成了两份,⼀份来⾃ A–>B–>D 这条路径,另⼀份来⾃ A–>C–>D 这条路径。 为了解决多继承时的命名冲突和冗余数据问题,C++ 提出了虚继承,使得在派⽣类中只保留⼀份间接基类的成员。
2025-03-14 19:49:41
288
原创 C++基础11(异常处理)
C++异常是指在程序运⾏时发⽣的反常⾏为,这些⾏为超出了函数正常功能的范围。例如运⾏时耗尽了内存或遇到意外的⾮法输⼊。异常存在于程序的正常功能之外,并要求程序⽴即处理,不做异常处理会导致程序的中断当程序的某部分检测到⼀个它⽆法处理的问题时,需要⽤到异常处理。异常提供了⼀种转移程序控制权的⽅式。C++异常处理涉及到三个关键字:try、catch、throw。
2025-03-11 12:59:28
408
原创 C++基础10(虚函数)
多态性主要通过虚函数(virtual functions)实现,它允许派⽣类重写基类中的⽅法,从⽽在运⾏时根据对象的实际类型来调⽤相应的函数virtual 函数类型 函数名(形参表);
2025-03-10 08:59:20
304
原创 C++基础09(继承后续)
在多继承时,基类与派⽣类之间或基类之间出现,当一个派生类继承多个父类,如果多个父类中存在同名成员,此时派生类对象在调用该同名成员时所出现访问的不确定性 这个叫二义性问题。不同类型数据之间在⼀定的条件下可以进⾏类型的转换,⽐如可以把⼀个整数类型赋值给float类型,但是不能把整数类型赋值给指针类型。这种不同类型之间的⾃动转换和赋值称为。如果函数的参数是基类对象或基类对象的引⽤,函数调⽤时的实参可以是派⽣类对象。当派生类的成员与父类的成员出现重名,此时派生类对象在调用该重名成员时,优先调用派生类的。
2025-03-08 21:54:40
405
原创 C++基础08(多态和运算符重载)
在 C++ 中,当操作数包含类对象时,运算符操作实际上是一个函数。由此可见,对于类对象而言,操作符运算实际上就是调用对应的类方法,但要注意,除了赋值运算操作符(即等号)是默认的之外,其余的大多数运算符都是需要定义了才能用的,否则会被判定为非法。引⼊运算符重载是为了实现类的静态多态性。运算符重载是对已有的运算符赋予多重含义,使⽤⼀个运算符作⽤与不同类型的数据时导致不同的⾏为。运算符重载的⽅法是定义⼀个重载运算符的函数,在需要执⾏被重载的运算符时,系统就⾃动调⽤该函数,以实现相应的运算。
2025-03-05 23:20:20
1094
原创 C++07(继承)
类类型和结构体类型是C++提供给程序员进行自定义类型的两种手段类类型是在结构体的基础上做发展起来的一个类型,是结构体的加强版class 类型名类体(数据成员+函数成员+访问范围修饰符)数据成员-----主要来描述事物的特征函数成员-----主要用来描述事物的行为访问范围修饰符:设置某个成员的可见性,如果省略,默认是私有成员类中数据成员的定义数据成员:格式: 数据类型 成员名;数据成员分类:普通数据成员 int a;通过构造函数实现初始化常数据成员 const int a;
2025-03-04 23:15:19
607
原创 C++基础05(拷贝构造函数)
即将一个对象的成员值一一赋值给另一个对象的对应成员。它只有⼀个参数,这个参数是本类的对象(不能是其他类的对象),⽽且采⽤对象的引⽤的形式(⼀般约定加const声明,使参数值不能改变,以免在调⽤此函数时因不慎⽽使对象值被修改)。是从C语言开始就有的基本关键字,其基本语义是使得被其修饰的符号成为不可修改(只读),在类的定义中,const也是一个很常见的关键字,它也是表达一种。● 指向常对象的指针最常⽤于函数的形参,⽬的是在保护形参指针所指向的对象,使它在函数执⾏过程中不被修改。
2025-03-01 11:26:15
993
原创 C++基础04(类)
在C++中,⽤户⾃定义数据类型的⽅式主要有两种:结构体类型和类类型。其中类类型是根据结构体类型演化过来的⼀种类型,可以说是结构体的增强版。类是⽤户⾃⼰指定的类型。如果程序中要⽤到类类型,必须⾃⼰根据需要进⾏声明,或者使⽤别⼈已设计好的类。C++标准本身并不提供现成的类的名称、结构和内容。在C++中声明⼀个类类型和声明⼀个结构体类型是相似的类(class。
2025-02-27 21:24:44
1300
原创 C++基础03(面向对象)
类是具有相同特征(数据元素)和⾏为(功能)的对象的抽象,不能直接使⽤。○ 特征 被称为 属性(是对事物的某种特性的抽象描述,⽐如年龄,性别)○ ⾏为 被称为 ⽅法(表示对象的⾏为(类中定义的函数,⽤来给类添加功能))
2025-02-26 23:55:26
459
原创 C++基础02(函数)
这个问题的答案比较复杂,总体的基本原则是,只要让系统在使用它们的时候,可以有效地区分各个不同的版本,那它们就可以形成合法的重载版本。在C语言中,相同作用域内的重名函数会引起冲突,哪怕它们拥有不同的参数列表也不行,而在C++中,重名函数只要满足一定的要求,可以同时存在,这大大拓展了函数设计的灵活性。使用内置函数可以节省运行时间,但却增加了目标程序的长度,因此一般只将规模很小(一般为5个语句一下)而使用频繁的函数(如定时采集数据的函数)声明为内置函数。的价值,在C++的函数模板、类模板中,利用。
2025-02-25 21:55:53
931
原创 C++基础01(c++简介)
c++是一个静态类型的,编译型的,支持面向过程编程,面向对象编程和支持泛型编程的高级编程语言编程语言分静态类型编程语言(c,c++,java)和动态类型编程语言(python)静态类型:指的是变量一旦定义,在作用域内,该变量一直属于某种类型动态类型:指的是变量在程序的运行期间,类型随时会变化。编译型:程序在运行前,先有编译这个环节,然后将编译的结果进行执行解释性:程序源码编写完,直接运行,没有编译这个环节:python,shell。
2025-02-25 09:47:37
245
原创 必看006
从语法角度上来说,protected继承会将父类中的public可见性的成员修改成为protected可见性,相当于在子类中引入了protected成员,这样在子类中同样还是可以调用父类的protected和public成员,子类的子类也就可以调用被protected继承的父类的protected和public成员。从语法角度上来说,public继承会保留父类中成员(包括函数和变量等)的可见性不变,也就是说,如果父类中的某个函数是 public的,那么在被子类继承后仍然是public的。
2025-02-24 21:03:51
322
原创 必看006
大端(Big-Endian)定义:高位字节存放在内存的低地址端,低位字节存放在高地址端。举例:假设有一个32位的整数0x12345678,大端模式下内存中存储顺序如下:12(最高位)345678(最低位)特点数据存储顺序符合人类习惯的阅读顺序(从左到右)。网络协议如TCP/IP通常使用大端模式,因此也称“网络字节序”。应用场景:多用于网络通信、部分嵌入式系统(如PowerPC架构)。小端(Little-Endian)定义:低位字节存放在内存的低地址端,高位字节存放在高地址端。
2025-02-13 23:04:12
760
原创 必看005
改变了变量的作用域,使得该全局变量只能在定义它的源文件中访问,其他源文件无法使用该变量。服务器回应SYN+ACK包:服务器接收到客户端的SYN包后,响应一个SYN+ACK包,表示同意连接并返回自己的序列号。客户端回应ACK包:客户端收到服务器的FIN包后,发送ACK包确认,连接关闭。服务器响应ACK包:服务器收到客户端的FIN包后,回应ACK包,确认客户端的关闭请求,但此时连接尚未完全断开。客户端发送ACK包:客户端收到服务器的SYN+ACK包后,发送ACK包确认连接建立,至此,连接正式建立。
2025-02-12 15:58:29
910
原创 Linux系统编程(线程)
分离线程没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源通俗的说也就是:我们知道一般我们要等待(pthread_join)一个线程的结束,主要是想知道它的结束状态,否则等待一般是没有什么意义的!加入pthread_join后,主线程会一直等待,直到等待的线程结束,自己才结束,使创建的线程有机会执行。 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源(栈),但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
2025-02-12 14:09:32
982
原创 必看004
阻塞模式:在阻塞模式下,当一个进程或线程尝试对某个文件描述符(如套接字)进行读写操作时,如果此时该描述符没有准备好(例如,没有数据可读或无法写入数据),那么进程或线程将被挂起,直到描述符准备好为止。在第3步中,fork函数不是由父进程来执行,而是由子进程来执行,当父进程执行完_CLONE函数后,子进程会执行fork函数的剩余部分,执行最后这个语句,fork函数就会有第二次返回,如果成功就返回0,失败就返回-1。总结得出,父子进程都执行fork函数,但执行不同的代码段,获取不同的返回值。
2025-02-11 17:21:09
822
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人