- 博客(28)
- 收藏
- 关注
原创 C++:友元
cout << "好朋友正在造访:" << building->bedRoom << endl;//卧室,需要借助友元访问。cout << "好朋友正在造访:" << building->sittingRoom << endl;// cout << "好朋友正在造访:" << building->sittingRoom << endl;// cout << "好朋友正在造访:" << building->bedRoom << endl;//friend 函数。//卧室 私有成员。
2025-10-18 15:46:49
691
原创 C++:面向对象
类型复制内容指针成员行为适用场景深拷贝仅表层数据(如基本类型)共享一块堆内容无指针成员或指针指向常量时浅拷贝表层数据+指针指向的内容各自拥有独立的堆内存包含指针成员且指向堆内存时在实际开发中,若类包含动态内存分配(如new操作),务必手动实现深拷贝(自己提供拷贝构造函数),避免默认浅拷贝带来的问题。
2025-10-18 15:36:09
607
原创 C++笔记
现实角度:对象是现实中的实物。静态特征动态行为编程角度:某个类型的变量现实角度:类是对象的抽象描述。成员数据(属性)成员方法(方法)编程角度来看:某个变量的类型类的组成 数据成员 → 属性 → 静态特征 成员函数 → 方法 → 动态行为 成员访问属性class 类名 {成员的访问属性;数据成员;成员函数;成员的访问属性;数据成员;成员函数;. . . };namespace 命名空间名 {变量 / 函数 }命名空间名::命名空间成员名,举例:`
2025-09-03 21:01:54
1049
原创 C++笔记
1972年前后,计算机先驱丹尼斯·里奇开始设计C语言并用它来重写Unix系统,里奇的 这个决定催生了计算机领域最石破天惊的两门重炮:Unix和C,这两者都是IT产业中鼻祖级 的存在,Unix是现代苹果系统和Linux系统的最初来源,而C则是现代众多编程语言的思想 源泉。后来随着IT产业的发展,C语言加入了诸如 面向对象、泛型编程等新特性,在1983 年前后,贝尔实验室的Bjarne Strou-strup(本贾尼・斯特劳斯特卢普)推出了现代编程界 中威力最猛的一门重炮:C++。
2025-09-02 17:11:00
848
原创 LinuxC语言系统开发——网络编程
addr: 地址结构体,用于存储地址信息,实际使用中用sockaddr_in 代替。函数原型: int accept((int sockfd, struct sockaddr* addr, int* addlen));函数原型: int connect((int sockfd, struct sockaddr* addr, int addlen));函数原型: int sendto(int sockfd,const void* buf,int len,int flags,
2025-08-29 10:43:50
857
原创 LinuxC语言线程的同步与互斥
函数原型: int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock);函数原型: int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock);函数原型: int pthread_rwlock_unlock(pthread_rwlock_t* rwlock);函数原型: int pthread_mutex_unlock(pthread_mutex_t* mutex);
2025-08-28 08:46:46
1019
原创 LinuxC系统多线程程序设计
函数原型: int pthread_create(pthread_t *id,const pthread_attr_t *attr,函数原型: void pthread_cleanup_push(void(*rtn)(void*),void* argp);函数原型: int pthread_setcancelstate(int state,int* oldstate);函数原型: int pthread_join(pthread_t id,void** retval);
2025-08-27 21:08:36
791
原创 c语言多任务处理(并发程序设计)
函数原型: pid_t wait(int *status) /pid_t waitpid(pid_t,pid,int *status,int option)envp:用户自定义环境变量数组(NULL结束),用于在启动新程序的同时,传递给新程序的数据。1. 父进程想要获取子进程退出值;p: (Path):系统会到PATH环境变量所代表的路径下去找寻待启动程序,如果未找到,exec函数调用失败。函数原型: pid_t getpid(void) / pid_t getppid(void)
2025-08-20 21:07:03
805
原创 c语言文件操作(目录操作)
函数原型: DIR* opendir(const char* dirname);函数头文件 #include <sys/types.h>函数原型: int mkdir(const char* dirname,mode_t mode);函数原型: struct dirent* readdir(DIR* dir);函数功能: 获取目录项信息,并将目录位置指针指向下一个目录项。函数原型: int closedir(DIR* dir);
2025-08-19 19:40:41
450
原创 Linux文件操作
函数原型: void* mmap (void* addr,int len,int prot,int flags,int fd,off_t offset);offset: 待映射的文件/设备的内容的偏移量(需要是内存页面(4096)的整数倍)函数原型: ssize_t write(int fd,const void *buf, size_t size);函数原型: off_t lseek(int fd, off_t offset, int whence);
2025-08-18 19:39:58
679
原创 c语言进程通讯
本文介绍了C语言中进程间通信(IPC)的几种主要方式,包括管道、共享内存和信号量。首先概述了IPC的基本概念和目的,包括数据通信、进程同步和控制等。重点讲解了无名管道和命名管道的特性、应用场景和操作方法,分析了两者的优缺点。接着详细介绍了共享内存机制,包括System V接口标准下的创建、映射、操作和回收流程,并指出了共享内存需要配合信号量使用以解决同步问题。最后讲解了信号量的PV原语操作原理和System V信号量的创建方法。这些IPC机制各有特点,适用于不同场景下的进程间通信需求。
2025-08-14 22:05:11
574
原创 C语言多任务处理(并发程序设计)
进程的概念首先是在20世纪60年代初期有 MIT 的Multics 系统和IBM的 TSS/360系统引入的,在40多年的发展中,人们对进程有过各种各样的定义,列举较为著名的几种。进程是一个独立的可调度的活动(Cohen, Jofferson);进程是一个抽象的实体,当它执行某个任务时,要分配和释放 各种资源。(P.Denning) 进程是可以并行执行的计算单位(Madnick,Donovan)进程是程序的一次执行的过程,进程是程序执行和资源管理的最小单元。
2025-08-11 21:20:58
685
原创 c语言字符数组
如果我们的char数组初始化的时候,没有完全初始化值的时候, 使用'\0'进行填充。需要注意的是,我们C语 言中的字符是字节字符。在C语言中,支持常量字符串,不支持变量字符串,如果想要实现类似的变量字符串,C语言提供了 两种实现方式。·B的ASCIIT码是0,不是一个可显示可输出的字符,是“空操作符”,它什么都不做,不会增加有。采用fgets进行字符串输入,可获取所有输入的字符串,包含\n,在实际的字符串处理时,我们。采用gets进行字符串输入,可获取所有输入的字符串,包含\n,在实际的字符串处理时,我。
2025-05-12 11:12:33
1163
原创 c语言二维数组,字符数组
如果我们的char数组初始化的时候,没有完全初始化值的时候, 使用'\0'进行填充。若对全部元素赋初值,自定义数组时可以省略第1维数组的长度,第2维数组的长度必须指明。二维数组可被视为一个特殊的一维数组,相当于二维数组又是一个特殊的一维数组,只不过它的元 素是一维数组。二维数组和一维数组一样,也可以部分初始化,未初始化的元素默认使用0或者 '\0' ( 应的ASCII是0 )补齐。需要注意的是,我们C语 言中的字符是字节字符。下标可以是已经有值的变量或数组元素,如: a[2*x-1][b[3][1]]
2025-05-08 09:48:14
466
原创 c语言 数组
是C99标准引入的一种特性,允许在结构体的最后一个成员中定义一个长度未知的数组。数组可以部分初始化:也就是可以给数组中的前几个元素初始化,未被初始化的元素系统将自。数组名也是标识符,我们所说的数组(名),大家可以理解为数据类型是数组的变量。数组的下标是从0开始(数组的最大下标 = 数组的元素个数 - 1)变长数组(VLA)的概念,就是可以使用变量,数组在运行的时候决定大。个元素距离第一个元素的偏移量为0,所以数组中的下标是从0开始的。所谓的初始化,就是定义数组的同时,用指定数据来给对应的元素赋值。
2025-04-28 08:53:56
733
原创 c语言变量指针与指针变量
语法:数据类型 *变量列表;举例:int a;//普通变量,拥有真实的数据存储空间//指针变量,无法存储数据,只能存储其他变量的地址指针变量的值只能是8/12位的十六进制整数。注意:①虽然定义指针变量*a,是在变量名前加上,但实际变量名依然为a,而不是*a②使用指针变量间接访问内存数据时,指针变量必须要明确的指向。(指向:指针变量存放谁的地址,就指向谁)③如果想要借助指针变量间接访问指针变量保存的内存地址上的数据,可以使用指针变量1前加来间接返回访问指针变量前加。
2025-04-14 08:48:47
1087
原创 Linux分支结构
不管条件表达式成不成立,都要执行一个语句,其次需要注意的是,语句1和语句都可以是单语句或者复合语句。在C语言中,用1(非0)表示关系表达式的值为真(条件成立),0表示关系表达式的值为假(条件不成立),即关系表达式的值要么为1(条件成立),要么为0(条件不成立)条件判断的结果是逻辑值(布尔类型值,也就是说分支语句条件可以使用关系表达式和逻辑表达式),在程序中可用0和1表示真假:1-真,0-假。·若表达式值为真(非0),则执行表达式后面的语句,执行完该语句后继续执行if语句后的其他语句。[else 语句+1;
2025-04-02 18:30:00
1160
原创 Linux 数组一维数组
数组是相同类型,有序数据的集合。数据类型 (类型说明符)数组名(数组容量)注意:数据类型又被称作类型说明符,数组容量又被称作数组元素个数或者数组的长度。说明:·数组的数据类型由数组中的元素来决定。也就是说数据类型,有元素的类型来决定,元素什么类型,数组就是什么类型。同一个数组中,所有元素的类型都是一致的。·数组名也是表示符,我们所说的数组(名),大家可以理解为数据类型是数组的变量(名)。命名规则与变量名相同,一般是变量名的复数表示,也就是以字母或者下划线开头,后面紧跟字母、下划线、数字。
2025-03-31 08:34:35
646
原创 C语言数据类型分类和常量
整型常量的表示 ·十进制表示:可以使用10个数字符号0~9以及+,-,如:123,-90 ·八进制表示:以0开头,可以使用7个数字符号0~7以及+,-,如:0123,-011 ·十六进制表示:以0x或者0X开头,可以使用8~9以及 AF(af),如:Qx12,-0x12。用单引号·括起来的一个字符,如:'a'、'A、'4'、"等,比如:"齐"就不是字符,一个汉字所占的字节数超过1个字符。·有符号与无符号基本整型常量(有符号表示范围是:负数+0+正数,无符号表示范围:0+正数)·浮点型(小数、实数类型)
2025-03-28 08:21:48
395
原创 linux 运算符
i还是i-,运算数自身都减1。表示在使用该运算符对象之后,先使用它,然后再让运算数自身增1或者减1,也就是使用增1或者减1前的值。表示在使用该运算符对象之前,先让运算数自身增1或者减1,然后再使用它,也就是使用增1或者减1后的值。'+,-,*,/,%':加减乘除取余运算符(双目/二元运算符:有两个运算数),注意:进行除法运算的时候,除数不能为0。'+、-':正负值运算符(单目/一元运算符:只有一个运算数),举例:+5,-5。算术运算符的结合方向:自左向右,也就是运算对象先与左边的运算符结合。
2025-03-24 20:52:21
420
原创 LINUX vim编辑器
sudo apt-get remove vim --卸载vim,vim也可以替换成其应用的名称。Tab:对命令行中的命令进行补全,这里要注意,如果前缀在同级中有多个文件或者文件夹,会失效。ctrl+L:对终端当前屏幕进行清空,其实就是翻了一页,保留之前的记录。ctal+c:强制退回到命令行状态,一般用于可执行程度的强制退出。ctal+shift+(+):对终端显示文本进行放大。ctal+(-):对终端显示文本进行缩小。Ctrl+Q:对锁定的终端进行解锁。:q:强制退出,不保存。
2025-03-17 20:52:07
378
原创 用户组相关操作
注意:如果在新建用户的时候没有指定用户组,就会创建一个与用户同名的组名,并让新用户属于这个组。-d表示文件夹 -m表示创建 -mg kelei(已有的组)表示将新建的用户加入到这个组。-o:和-g同时使用,允许用户组新的GID和系统已有的用户组的GID相同。-r:删除用户的同时,删除与用户相关的所有文件(递归删除)-f:强制删除用户,即使用户当前已登录(强制删除)-g:GID,组的编号(唯一编号)执行权限:ROOT权限。执行权限:ROOT权限。执行权限:ROOT权限。执行权限:ROOT权限。
2025-03-14 19:23:41
349
原创 Linux文件操作指令
说明:该指令是从文件系统的数据库中查找,新创建的文件还没有在数据库中建立索引,用该指令找不到。-n:从头开始显示n行的内容(识别换行符(识别空格)-c:统计搜索到的行的数量(count)-c:统计(count)返回的是一个数字。^:行首匹配:匹配以什么什么开头的。$:行尾匹配:匹配以什么什么结尾的。-i:忽略大小写搜索,主要针对英文。-n:显示行号(numder)方向上下键:向上向下翻一行。-m:显示当前行的范围。q键:退出(quit)
2025-03-09 15:08:27
418
原创 Linux目录的操作
shuom: 多个参数可以同时出现,将所有文件或者目录按照时间倒序排序并以列表的形式显示(时间越小越靠前),也可以指定具体的目录进行访问。cd空格~:切换到当前登录的家目录下的用户目录下,比如:ca ~,就会切换到/home/st,等于cd/home/st。-a:显示所有(包含隐藏文件或目录,linux中的隐藏目录一般以.“点”开头)文件或者目录。说明:文件删除直接删除就可以了,目录删除+文件删除,需要使用选项-r进行递归删除。-l:显示所有的文件或者目录的详细列表(不包含隐藏文件或目录)
2025-03-07 11:31:51
320
原创 Linux路径的概念
ctrl + l:清理Linux终端屏幕上的内容,会保留之前的内容,需要翻页。ctrl + shift + +:对Linux终端的显示字体进行放大。st-virtual-machine:主机名,安装的时候设置的。ctrl + alt + t:打开linux终端(命令窗口)$:用来区分用户角色的,$表示普通用户,#表示ROOT用户。st:当前登录的用户名,这个用户名一般是安装系统的时候设置。ctrl + -:对Linux终端的显示字体进行缩小。~:当前登录用户的家目录:(/home/st)
2025-03-06 19:50:01
378
原创 Linux基础
8./proc:存放系统运行时的运行信息。3./boot:主要存放系统的引导程序。2./bin:主要存放系统普通指令。10./var:存放缓存,备份文件。13./sbin:用于存放特权指令。11./cdrom:光驱。
2025-03-05 08:52:07
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅