- 博客(32)
- 收藏
- 关注
原创 标准c++4
给类对象优先重载成员运算符函数时,必须要在类的内部实现,当无法修改对象的源码时,也就无法在结构、联合、类的内部增加成员运算符函数,又想给类对象增加运行符函数,这种情况只能定义全局的运算符函数,把运算对象都作为参数传递给运算符函数。2、由于cin、cout都在>>、<<运算的左边,如果想实现成员运算符函数,就需要在istream、ostream类中实现,而我们无法增加或修改istream、ostream类的代码,所以只能实现全局的 >>、<< 运算符函数。
2024-09-03 09:36:43
622
原创 标准c++3
在成员函数的参数列表的末尾(小括号后面),用const修饰,这种成员就叫常函数。class 类名public:// 常函数返回值 函数名(参数列表) const在定义结构、联合、类对象时,使用const修饰,这种对象就叫常对象。const 类名 对象名;const 类名* 指针变量 = new 类名;是一种特殊构造函数,如果没有显式的实现,编译器就会自动生成。class 类名public:// 拷贝构造类名(const 类名& that)
2024-09-02 10:29:42
905
原创 标准c++---2
在C语言中定义的全局变量、函数、结构、联合、枚举、枚举值、宏都在全局作用域下,所以当项目比较庞大时,非常容易造成命名冲突(以模块名作前缀、后缀),所以C++中选择把全局作用域进行拆分成子作用域进行管理,这些子作用域就是作名字空间。把抽象结果(利用面向对象的思维模式,思考、观察出的结果),使用用C++的语法封装出一种类似结构的自定义数据类型(复合数据类型)。使用设计好的类(结构)这种数据类型,定义出的类变量在面向对象编程语言中被称为对象(结构变量),创建类对象的行为也被称为实例化对象。int id。
2024-08-30 16:06:18
873
原创 socket通信
1、什么是套接字Socket是封装了TCP/IP协议簇的系统API接口,这使得程序员无需关注协议本身,直接使用socket提供的接口与不同主机间的进程互联通信。目前市面上主流的操作系统都采用这套机制进制网络通信,所以不同种类的操作系统,使用不同的编程语言,只要调用操作系统提供的Socket接口,都能进行网络通信。
2024-08-15 10:31:53
614
原创 操作系统---线程管理
线程是操作系统能内够进行运算、执行的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。总结:线程是进程的一部分,是进程内负责执行的单位,进程是由资源单位(内存资源、信号处理方案、文件表)+执行单位组成,默认情况下进程内只有一个线程,但可以有多个。POSIX线程(POSIX Threads,常被缩写为pthread)是POSIX的线程标准,定义了创建和操纵线程的一套API。
2024-08-13 08:56:55
851
原创 操作系统---进程通信
进程间通信(Interprocess communication 也叫IPC):指两个或多个进程之间进行数据交互的过程。X/Open国际联盟有限公司是一个欧洲基金会,它的建立是为了向UNIX环境提供标准,XSI是X/Open System Interface的缩写,也就是X/Open设计的系统接口。X/Open的主要的目标是促进对UNIX系统、接口、网络和应用的开放式系统协议的制定。它还促进在不同的UNIX环境之间的应用程序的互操作性,以及支持对电气电子工程师协会对UNIX的可移植操作系统接口规范。
2024-08-12 09:04:36
277
原创 操作系统---进程管理
程序是存储在磁盘上的可执行文件,里面包含可执行的机器指令和数据的静态实体;进程是处于活跃状态的计算机程序,也就是正在运行中的程序一个运行中的程序,可能由多个进程组成,但至少要有一个进程,称为主进程,同时可以通过系统调用创建出若干个子进程同时进行任务一个程序也可以同时运行出若干个进程。
2024-08-08 09:01:42
774
原创 操作系统---信号处理
当进程接收到消息后中止当前正在执行的任务,转而执行其它任务,等待其它任务执行完毕后再返回继续执行。这种执行模式称为中断,分为硬件中断和软件中断两种信号是UNIX、类UNIX以及其他POSIX兼容的系统中,为了完成不同进程之间通讯的一种方式。是一种软中断,是一种异步处理机制,用于提醒进程某个事件发生了,可能要去处理。
2024-08-07 08:58:12
521
原创 操作系统---文件管理
由操作系统向应用程序提供的程序接口信息,本质上就是应用程序与操作系统之间交互的接口。操作系统的主要功能是为了管理硬件资源和为应用软件的开发人员提供一个良好的环境,使得应用程序具有更好的兼容性,为了达到这个目的,内核提供一套统一的具有一定功能的内核接口函数,称为系统调用\系统函数,以C语言函数的格式提供给用户操作系统负责把应用程序的请求传给内核,由内核调用具体内核功能完成所需请求,结束后把结果通过操作系统的接口函数的返回值传递给调用者。
2024-08-06 08:59:45
673
原创 操作系统—内存管理
虚拟内存是操作系统对进行内存空间地址进行管理的一套精心设计的逻辑层面的内存空间概念在32位系统下,操作系统规定给每个启动的进程拥有4G大小虚拟内存,但是这4G的虚拟内存不能直接使用的,其实就是系统给进程画的饼,当进程真正要存储数据需要使用内存时,系统会把一部分虚拟内存与物理内存进行映射,必须进行映射后的虚拟内存才能正常使用如果非要使用没有映射过的虚拟内存,操作系统一定会在运行时产生段错误mmap、munmap底层不维护任何东西,只会返回映射后的内存首地址。
2024-08-05 08:59:39
749
原创 系统环境介绍
系统环境:介绍系统简介、库文件、环境变量、编译器、系统特性内存管理:操作系统是如何管理内存的文件管理:文件读写、目录读写、文件属性、文件管理信号处理:多个程序同时运行、解决一些通信类的问题进程管理:多个程序同时运行、解决一些复杂问题进程通信:多个进程需要协同交互数据,这是多进程协同工作的基础线程管理:让一个程序同时做若干个任务线程同步: 让多个线程同时工作时不相互干扰、破坏诞生于1971年美国AT&T公司的贝尔实验室,主要开发者是丹尼斯.里奇、肯.汤普逊。
2024-08-03 15:41:58
910
原创 数据结构---算法
对特定问题的求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。在一个数据序列中,查找某个数据是否存在或存在的位置,在实际开发过程中使用的频率非常高,例如对数据常见的操作有增、删、改、查,增加数据时需要查询新增加的数据是否重复,删除数据时需要先查询到数据所在位置再删除,修改数据时也需要先查询到被修改的数据在什么位置,查找算法在编程中重要性排列在第一位。排序的功能是将数据元素的任意序列,重新排列成按照关键字有序的序列。
2024-08-02 09:04:14
781
原创 结构指针和柔性数组
这样的结构变量不能直接写入文件中(因为对于结构成员指针是直接把存储的地址写入文件,是没有意义),并且这样的结构变量也不能直接赋值使用(因为会只拷贝地址,相当于两个变量共同指向同一块内存,称为浅拷贝,没意义)当结构中某类成员的数量不确定时,应该先设计一个结构成员指针,通过创建结构变量时,另外申请一块堆内存,并让该结构成员指针指向它,从而配合长度属性使用。柔型数组的原理是编译器巧妙地通过数组合法越界的手段来访问结构体后序多余的内存,因为柔型数组的内存与结构的内存一定是连续的。类型* 结构成员指针;
2024-08-01 09:13:24
262
原创 数据结构---图
图是一种比较复杂的数据结构,在线性表中数据元素之间仅有线性关系,每个元素只有一个直接前驱和直接后继(元素之间只存在一对一关系),在树形结构中元素之间有着明显的层次关系,每一层的元素只能和下层的多个元素有关系(元素之间存在一对多关系),而在图形结构中,任意两个结点之间都可能有关系(元素之间存在多对多关系)。图中的数据元素被称为顶点,一般使用V表示图的顶点的有穷非空集合。两个顶点之间的关系记作<v,w>,表示能从顶点v到达顶点w,也就是v能到w,但w不一定能到v,我们称v为弧尾或初始点,称w为弧头或终端点。
2024-08-01 08:59:35
413
原创 数据结构---栈和队列
栈和队列是两种重要的线性结构,从数据结构角度,他们都是线性表,特殊点在于它们的操作被限制,也就是所谓的功能受限,统称功能受限的线性表从数据类型角度,它们也可以是看成处理、管理数据的一种规则与栈结构相似的是,也只允许在端口处进行添加、删除操作,但是有两个端口,一个负责添加数据,称为入队,该端口称为队尾,另一个端口只负责删除数据,称为出队,该端口称为队头,属于一种先进先出结构,称为FIFO。
2024-07-31 09:07:28
751
原创 数据结构---树
树型结构是一种非线性的数据结构,它具有一个称为根节点(root node)的特殊节点,以及一些称为子节点(child nodes)的节点。每个节点可以有零个或多个子节点,但只能有一个父节点(parent node),除了根节点没有父节点。在树型结构中,节点之间的连接关系表示了它们之间的层次关系。树型结构常用于表示具有层次关系的数据,例如文件系统、组织结构、目录结构等。它提供了一种便捷的方式来组织和访问数据。
2024-07-30 09:23:35
397
原创 数据结构---表
在数据元素存在非空有限集中:存在唯一的一个被称为“第一个”的数据元素存在唯一的一个被称为“最后一个”的数据元素除了第一个外,集合中每个数据元素都只有一个前趋元素除了最后一个外,集合中每个数据元素都只有一个后继元素。
2024-07-29 09:28:26
752
原创 数据结构绪论
数据结构不是研究数值计算的这些是数学家应该研究的问题,它是研究计算机存储、组织数据的方式问题的学科,数据结构会影响算法的效率,合适的数据结构可以带来更高的运行或存储效率。1968年,美国的高纳德(Donald E. Knuth)教授《基本算法》,开创了数据结构课程体系的先河。程序设计 = 数据结构 + 算法凭借一句话获得图灵奖的Pascal之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:“算法+数据结构=程序”。
2024-07-28 15:22:53
327
原创 标准c语言11
全局变量尽量少用,或者不用。建议:全局变量首字母大写,局部变量全部小写1、指针(pointer)是一种特殊的数据类型,使用它可以定义指针变量,简称指针。2、指针变量中存储的是内存的地址,是一种无符号的整数。3、通过指针变量中记录的内存地址,我们可以读取内存中所存储的数据,也可以向内存中写入数据。4、一般使用%p以十六进制格式显示内存地址。类型* 指针变量名;int* xxx_p;
2024-07-27 14:55:26
575
原创 标准c语言10
功能:删除文件功能:重命名文件功能:把文件的内容设置为length字节数功能:生成一个与当前文件系统不重名的文件名。功能:检查文件的权限mode:R_OK 读权限W_OK 写权限X_OK 执行权限F_OK 文件是否存在返回值:检查的权限如果存在则返回0,不存在则返回-1。Makefile脚本集合了程序的编译指令的文件,make是一个命令工具,当执行make命令时,它会自动读取Makefile中的编译指令并执行,会自动完成整个项目的自动化编译工作。
2024-07-26 09:05:49
686
原创 标准c语言9
define 宏名 会被替换的内容由于宏常量和宏表达式可能使用在表达式中,因此在定义宏常量和宏表达式的末尾不要加分号。一般宏名全部大写以作区分(局部变量全部小写,全局变量首字母大写,循环变量i、j、k、函数名全部小写+下划线、数组arr、字符串str、指针p)__FILE__ 获取当前文件名__func__ 获取当前函数名__LINE__ 获取当前行号__DATE__ 获取当前日期__TIME__ 获取当前时间__WORDSIZE 获取当前编译器的位数// 适合用来显示警告、错误信息。
2024-07-25 10:08:20
900
原创 标准c语言8
是一种由程序员设计的复合数据类型,它由若干个其它类型的成员组成,用于统一描述事物的各项属性。使用各类型的变量也可以描述事物的各项属性(如:通讯录项目),但使用麻烦且容易出错,没有使用结构方便,安全性高、统一性高,同时结构也是面向对象编程的基础。基础C语言编程思想:面过过程在C语言中,struct 结构名 才是完整的数据类型名,但使用时比较麻烦,可以使用typedef给结构重定义简短的类型名。// 结构设计完成后重定义typedef struct 结构名 结构类型名;// 设计结构时重定义。
2024-07-24 09:20:18
910
原创 标准c语言7
for(;;sleep(1);sec++;字符就是符号或图案,但在计算机中以整数形式存在,当需要显示时,会根据ASCII表中的对应关系显示出相应的符号或图案。在C语言中使用char类型的变量存储字符的ASCII码值,也就是使用整数进行模拟字符,标准的ASCII码表的范围是:0~127,共128个字符,其他的语种,使用-128~-1进行设计字符编码,比如中文的汉字,使用的是2~3字节存储一个汉字。
2024-07-23 16:47:34
629
原创 标准c语言6
是进程的一个内存段(text、data、bss、heap、stack),由程序员手动管理特点就是足够大,缺点就是使用麻烦,比较危险。使用堆内存只需要掌握malloc和free函数即可,对于calloc和realloc函数了解即可。操作系统交给malloc33页内存(135168个字节),可访问的范围是0~135167,malloc会预留8个字节的空隙,返回给程序的是33页内存的第9个字节的地址(33页内存还剩135160个字节),所以可访问的范围是0~135159,只要在这个范围就不会出现段错误。
2024-07-22 09:03:22
728
原创 标准c语言4
随着CPU的不断发展位数不断增加,由早期的8位逐渐发展成现在的64位,因此八进制就不能满足需求了,所以发展出了十六进制,但由于历史原因八进制还不能退出历史舞台。假如把x转换成二进制,x/2记录下余数,然后对商继续除以2,重复这个过程,直到商为0结束,然后把记录的余数倒序汇总,就得到了x的二进制。十进制的数据是以补码形式存储在计算机中的,因为计算机的CPU中只有加法器,也就是只能运算加法,其它运算都是使用加法模拟的。0开头的是8进制,0x开头的是十六进制,可以先转换成二进制再转换10进制,然后再运算。
2024-07-21 15:27:15
711
原创 标准c语言5
一级指针存储的是普通变量的内存地址,二级指针存储的是指针变量内存地址。类型* 一级指针;类型** 二级指针;注意:二级指针在使用方法上与一组指针不同,所以一般以pp结尾,让使用者从变量名上就能区别一级指针与二级指针。由指针变量构成的数组,也可以说它的身份是数组,成员是指针变量。类型* 数组名[n];就相当于定义了n个类型相同的指针变量。// 相当于定义了10个int*的指针变量// 10个野指针专门指向数组的指针变量,它的进步值是整个数组的字节数。类型 (*指针变量名) [n];
2024-07-21 15:26:00
539
原创 标准c语言3
数组就是变量的组合,是一种批量定义变量的方式类型名 数组名[数量];int arr[8];// 相当于定义了8个int类型的变量函数就是一段具有某一项功能的代码集合,它是C语言中管理代码的最小单位,把具有某项功能的若干行代码封装在函数中方便管理代码且方便重复调用。为了更方便的管理、调用代码,降低开发难度,程序员自己封装的一些函数。标准库中除上封装了函数,还提供一些头文件,里面是对函数的说明。
2024-07-19 09:12:52
484
原创 标准c语言2
不同类型的数据组成的表达式,编译器会把先它们转换成相同的类型再计算,这叫作自动类型类型或隐式类型转换,它们的转换规则是以不丢失数据为前提:在C语言中,当不同的基本类型组成表达式时,会发生自动类型转换。代码的默认执行流程是从上到下,逐步、逐条执行的,if语句可以根据判断条件选择让代码是否执行,改变了代码 的默认执行流程,所以这种语句也叫流程控制语句。前提:只有相同类型的数据才能在一起进行运算,因为不同类型的数据,字节数不同、格式、运算规则不同,必须把不同类型的数据转换成同一类型才能运算。
2024-07-18 09:54:45
628
原创 标准c语言1
丹尼斯.里奇和肯.汤普逊在1971~1973年美国贝尔实验室,在开发UNIX操作系统时,在BCPL语言的基础上(new B语言),发明第一款高级编程语言,取BCPL第二个字母作为名字,所以叫C语言它是为了开发操作系统而研发的一款编程语言,它特别擅长控制硬件,所以在服务器开发、驱动编程、单片机、嵌入式开发中使用较多它是一个负责编译代码的程序,它负责把人能看得懂的代码(文本文件)翻译成计算机能看懂的二进制指令,它由预处理器、编译器、汇编器、链接器组成,统称编译器。
2024-07-16 16:48:07
707
1
原创 Linux基础
1、UNIX系统由贝尔实验室研究员丹尼斯.里奇和肯.汤普逊合作开发,并顺便发明了C语言,现主要应用于各种大型服务器,如:电信、银行、各大公司的核心关键业务,苹果公司以它作为内核,推出了MacOS、iOS系统,该系统收费,质量比较高。2、Minix系统是UNIX精简版主要用于科学研究,Linux的作者林纳克纳.托瓦斯就是受了它的启发,引发了全世界的程序员一起完善了Linux系统。
2023-11-15 15:34:47
21
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人