2023-07-10
Commentconst 修饰的成员变量只能在构造函数的参数列表中初始化。
const 修饰的成员函数不能改变成员变量的值。
定义:
void function(void) const
const 修饰的对象只能调用常成员函数,不能调用非 常成员函数
Read More
2023-07-10
Commentstatic修饰局部变量时,用来延长生命周期。
修饰全局变量或者函数时,用来限制作用域
修饰静态成员变量的时候,所有的类对象共享此资源。
访问此资源时,既可以用类访问,也可以用对象访问。
记得要在类外初始化
static修饰静态成员函数的时候,静态成员函数没有this指针,也就不能访问非静态资源。
Q:什么时候使用静态成员函数?
: 当不需要实例化,不需要访...
Read More
2023-07-09
Commentc++的函数在声明的时候可以定义默认值参数,有几个注意事项:
1.当函数的定义和声明分开时,默认值参数只能在声明处定义
2.如果某个参数时默认参数,那么它后面的参数都必须是默认参数。
在同一目录下同时建立a.c和b.c,而且同时声明了相同函数名的函数,如果用c语言在main.c中想调用这两个文件中的相同函数,是很难办到的,即使你在某个文件中使用了static关键字表示作用域范围,也是很不方便的。在C++中的命名空间就很好的解决了这点。
Read More
2023-07-04
Commenttcp是可靠的,面向字节流的协议,传输过程中可能就会
完整的服务器端代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475...
Read More
2023-07-02
Comment真的不喜欢数据结构啊啊 链表什么的真讨厌啊啊啊啊 made真的恶心,各种结构体,遍历真的无趣T_T
还是先学着后面的吧,udp的局域网聊天先放一放,本来想着能实现也是很不错的,但是代码也不完整,等以后回头了,把这块和学生管理系统那块再统一看看T_T
Read More
2023-06-27
Comment这两天在想,到底是否学会了,怎么验证你学会了,我一直在纠结,但是昨天早上醒来,我觉得我可能迄今为止做错了很多事,比葫芦画瓢?谁都会,靠着自己脑中残留的记忆来照着写,真的是硬实力吗?我不觉得,我认为只有自己写出来了,才算你牛逼。
这两天虽然只写了不多的代码,但我觉得让我受益匪浅。把遇到的问题即时记录下来则会很有帮助。
1.warning的警告要看在哪里警告,警告的提示跟函数参数的出入在哪,我的问题在于编译时提示我recvfrom的参数有问题,
Read More
2023-05-30
Comment在此项目中,创建了一个信号量集合并包含了三个信号量.
使用一个信号量 (SEM_MUTEX) 用于共享内存的互斥.
使用两个信号量(SEM_EMPTY 与 SEM_FULL)用于环形队列的同步
SEM_EMPTY = 0,表示目前队列只有0个数据为空(本人倾向于记SEM_CURRENT=0,更方便记忆。)
当 SEM_FULL = 0 时,表示目前队列...
Read More
2023-05-25
Commentip字符串转换网络字节序:
12int inet_aton(const char *cp, struct in_addr *inp); [addr to network]功能:将cp指向的IP字符串转成网络字节inp保存的地址中。
网络字节序转换IP字符串
1234567char *inet_ntoa(struct in_addr in); [...
Read More
2023-05-25
CommentIP字节符转换为网络
Read More
2023-02-23
Comment所谓进程,顾名思义,就是描述一个程序的执行过程。
进程与程序的区别:
程序是存储在磁盘资源中的静态指令集合,没有执行的概念
进程是程序的动态过程,包括创建,凋亡等等
并发与并行的区别:
并发是指在同一时间段有多个任务同时执行,由操作系统的调度算法来实现,比较经典的就是时间片轮转。
并行是指在多个处理器核心下同时执行任务,比如一个cpu4核心,那么可以同...
Read More