c++
文章平均质量分 55
怪我冷i
这个作者很懒,什么都没留下…
展开
-
Linux C++网络编程-王健伟
(1)课程总述(2)基础要求和学习方法(3)简要自我介绍、讲解特点(4)课程详细说明(5)推荐书籍(6)结语(1)windows下的vs2017安装(2)准备一个word文档(3)windows下的虚拟机安装(4)虚拟机中安装linux 操作系统(5)配置固定IP地址(6)配置远程连接(7)安装编译工具gcc,g++ 等(8)共享一个操作目录。原创 2023-11-25 11:09:36 · 578 阅读 · 0 评论 -
c语言指针加减法
为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。,走了4步(这里十进制里的4步哦)。因为int类型为4字节。注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。其实是走了16步(这里十进制里的16步哦)。我们打印一下内存地址。,意思就是16进一,所以。下面代码会输出什么()选项有1,2,3,4。原创 2022-11-06 18:33:02 · 1061 阅读 · 0 评论 -
解决error: invalid conversion from ‘unsigned char‘ to ‘unsigned char*‘
解决error: invalid conversion from ‘unsigned char’ to ‘unsigned char*’运用 reinterpret_cast。H264NalHeader为。原创 2022-11-03 11:49:14 · 3215 阅读 · 0 评论 -
linux编程scandir的三级指针怎么理解
linux编程scandir的三级指针怎么理解scandir扫描dir目录下(不包括子目录)代码 #include <dirent.h> int scandir(const char *dirp, struct dirent ***namelist, int (*filter)(const struct dirent *), int (*compar)(const struct dirent **, co原创 2021-02-24 16:17:19 · 133 阅读 · 0 评论 -
C++中const放在函数后面的意义
之所以这样,是因为对于一个常量成员对象,它的成员值是不能改变的,编译器不知道它调用的函数会不会改变其对象值,而const 标记的常量成员函数就是告诉编译器,我不会改变值,调用我吧;对于非常量成员函数,如果调用的话,因为函数可能改变常量对象的成员值,所以编译器就会在编译的时候报错。const 放在函数后表示这个函数是常成员函数,常成员函数就是不能改变成员变量值的函数,按这表述,非常成员函数就是可以改变成员变量值的函数啦。const限定符,它把一个对象转换成一个常量。转载 2022-10-06 10:10:17 · 1605 阅读 · 0 评论 -
c++面试100题-91-(一个字节中被置1的位的个数)
91、请编写一个c函数,该函数给出一个字节中被置1的位的个数。原创 2022-07-29 18:54:53 · 234 阅读 · 0 评论 -
面试必背——TCP三次握手和四次挥手过程
TCP三次握手和四次挥手过程原创 2021-08-06 17:13:57 · 982 阅读 · 0 评论 -
git命令简短命名
git命令简短命名Git 有许多高级用法,有的也很复杂,我不可能也没必要把那些讲清楚。所以,我只介绍一个能够简化 Git 操作的小技巧:命令别名。Git 的命令含义明确,但缺点是单词太长,多次操作输入就显得很繁琐,这点就不如 SVN 命令那么简单明了。好在我们可以在 Git 的配置文件“.gitconfig”里为这些命令起别名,比如把“status”改成“st”,把“commit”改成“ci”。下面这个就是我常用的一个 Git 配置,里面还有个特别的地方是在“diff”的时候使用“vimdiff”,用原创 2021-08-04 09:51:51 · 635 阅读 · 0 评论 -
c++11多线程
c++11多线程对多线程的支持我们来看一个稍微复杂一点的例子。在 C++11 之前,由于 C++98/03 本身缺乏对线程和线程同步原语的支持,我们要写一个生产者消费者逻辑要这么写。在 Windows 上: /** * RecvMsgTask.h */ class CRecvMsgTask : public CThreadPoolTask { public: CRecvMsgTask(void); ~CRecvMsgTask(void); public:原创 2021-08-03 12:52:02 · 213 阅读 · 0 评论 -
c++为什么使用初始化列表会快一些?
初始化列表初始化列表是一种C++初始化列表,有初始化阶段和计算阶段两个阶段。与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。从概念上来讲,构造函数的执行可以分成两个阶段,初始化阶段和计算阶段,初始化阶段先于计算阶段。定义与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。class foo{public: foo(strin转载 2021-07-29 10:49:13 · 1023 阅读 · 0 评论 -
qt Creator常用快捷键
快捷键编译+运行 ctrl +r编译 ctrl+b帮助文档 f1字体大小 ctrl + 鼠标滚轮同名的.h 和.cpp之间的切换 F4注释 ctrl+ /查找关键字 ctrl +fctrl + shift +↑ 或者↓命名规范类名 首字母大写、单词与单词之间 首字母大写函数、变量名称首字母小写 单词与单词之间首字母大写帮助文档的查看方式第一种 f1查看第二种 左侧的按钮第三种 exe程序...原创 2021-07-27 09:06:55 · 177 阅读 · 0 评论 -
怎么解决TCP网络传输「粘包」问题?
粘包的概念粘包: 多次数据发送, 收尾相连, 接收端接收的时候不能正确区分第一次发 送多少, 第二次发送多少.粘包问题分析和解决?方案1: 包头+数据如4位的数据长度+数据 -----------> 00101234567890其中0010表示数据长度, 1234567890表示10个字节长度的数据.另外, 发送端和接收端可以协商更为复杂的报文结构, 这个报文结 构就相当于双方约定的一个协议.方案2: 添加结尾标记.如结尾最后一个字符为\n或者 $等.方案3:原创 2021-07-25 15:48:58 · 318 阅读 · 1 评论 -
c++操作符new 与delete学习
文章目录c++操作符new 与delete学习一,简单类型,new 一个int和new 一个int 数组二,new 与delete重载二,对象数组的new 与 delete参考c++操作符new 与delete学习一,简单类型,new 一个int和new 一个int 数组#include<stdio.h>#include<stdlib.h>#include<iostream> //new 一个intvoid main01(){ int num = 1原创 2021-07-16 23:21:58 · 137 阅读 · 1 评论 -
关于lower_bound( )和upper_bound( )的常见用法与区别
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到转载 2021-07-14 12:47:52 · 221 阅读 · 0 评论 -
C/C++中局部变量、全局变量与成员变量之间的区别
文章目录1、成员变量2、全局变量3、局部变量:补充:参考1、成员变量成员变量是存在类中声明的。依类而生,离开类之后就不是成员变量。成员变量只能通过对象访问。存储 :栈中注:成员变量不能在定义的同时不能初始化。2、全局变量在函数外定义的变量,可为本源文件中其它函数所公用。作用域:从定义变量的位置开始到本源文件结束。存储:静态区域程序一启动就会分配存储空间,直到程序结束才会释放。3、局部变量:写在函数或代码块中的变量, 我们称之为局部变量作用域: 从定义的那一行开始, 一直到遇到大括原创 2021-06-07 23:12:24 · 4410 阅读 · 0 评论 -
Linux系统编程——pipe管道练习_父子进程完成ps_aux_grep_bash
父子进程完成ps_aux_grep_bash用管道完成,执行ps aux | grep bash命令,简单的说就是ps aux本来是输出到标准输出的,现在用dup2重定向到管道的写端,所以grep bash获取前方传来的数据,其标准输入得生重定向到管道的读端。原理1 创建管道2 创建子进程fork3 在父进程中关闭读端fd[0]4 在子进程中关闭写端fd[1]5 在父进程中将标准输出重定向到管道的写端6 在子进程中将标准输入重写向到管道的读端7 在父进程中调用execl函数执行ps au原创 2021-04-02 17:09:51 · 313 阅读 · 0 评论 -
Linux系统编程——孤儿进程与僵尸进程
文章目录孤儿进程孤儿进程的概念模拟孤儿进程的案例僵尸进程僵尸进程的概念如何解决僵尸进程模拟僵尸进程的案例参考孤儿进程孤儿进程的概念若子进程的父进程已经死掉,而子进程还存活着,这个进程就成了孤儿进程。为了保证每个进程都有一个父进程,孤儿进程会被init进程领养,init进程成为了孤儿进程的养父进程,当孤儿进程退出之后,由init进程完成对孤儿进程的回收。模拟孤儿进程的案例编写模拟孤儿进程的代码讲解孤儿进程,验证孤儿进程的父进程是否由原来的父进程变成了init进程。僵尸进程僵尸进程的概念若原创 2021-04-02 10:20:09 · 175 阅读 · 0 评论 -
Linux系统编程——fcntl函数
文章目录fcntl函数fcntl函数常用的操作:1 复制一个新的文件描述符:2 获取文件的属性标志3 设置文件状态标志4 常用的属性标志练习1. 使用fcntl函数实现复制文件描述符2. 使用fcntl函数设置在打开的文件末尾添加内容fcntl函数函数描述: 改变已经打开的文件的属性函数原型: int fcntl(int fd, int cmd, … /* arg */ );若cmd为F_DUPFD, 复制文件描述符, 与dup相同若cmd为F_GETFL, 获取文件描述符的flag属性值原创 2021-03-31 15:30:55 · 1055 阅读 · 0 评论 -
Linux系统编程——dup2函数复制文件描述符
dup2dup2函数Ø 函数描述: 复制文件描述符Ø 函数原型: int dup2(int oldfd, int newfd);Ø 函数参数:oldfd-原来的文件描述符newfd-复制成的新的文件描述符Ø 函数返回值:成功: 将oldfd复制给newfd, 两个文件描述符指向同一个文件失败: 返回-1, 设置errno值Ø 假设newfd已经指向了一个文件,首先close原来打开的文件,然后newfd指向oldfd指向的文件.若newfd没有被占用,newfd原创 2021-03-31 14:29:09 · 184 阅读 · 0 评论 -
Linux系统编程——dup函数
dup函数dup函数Ø 函数描述: 复制文件描述符Ø 函数原型: int dup(int oldfd);Ø 函数参数: oldfd -要复制的文件描述符Ø 函数返回值:成功: 返回最小且没被占用的文件描述符失败: 返回-1, 设置errno值练习: 编写程序, 测试dup函数.测试dup函数复制文件描述符//测试dup函数复制文件描述符#include <stdio.h>#include <stdlib.h>#include <string原创 2021-03-31 14:28:05 · 482 阅读 · 0 评论 -
456. 132模式
456. 132模式给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。**进阶:**很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn) 或 O(n) 的解原创 2021-03-24 17:45:06 · 115 阅读 · 0 评论 -
C++ 引用 vs 指针
C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。引用必须在创建时被初始化。指针可以在任何时间被初始化。参考C++ 引用把引用作为参数C++ 支持把引用作为参数传给函数,这比传一般的参数更安全。把引用作为返回值可以从 C++ 函数中返回引用,就像返回其他数据类型一样。...原创 2021-03-24 15:39:35 · 124 阅读 · 0 评论 -
vector嵌套vector遍历
vector嵌套vector遍历void printVector(vector<vector<int>>& v){ for (vector<vector<int> >::iterator it = v.begin(); it != v.end(); it++) { //(*it)是个vector<int>型的小容器 //故要再创建相应的迭代器才能访问其中元素 for (vector<int>::iterato原创 2021-03-20 11:40:49 · 1877 阅读 · 0 评论 -
c++安全传输平台——老师结构体编码与解码(ASN.1编码解码)
安全传输平台之老师结构体编码与解码老师结构体编码与解码demo1#define _CRT_SECURE_NO_WARNINGS#include "stdio.h"#include "stdlib.h"#include "string.h"#include "itcast_asn1_der.h"#include "itcastderlog.h"typedef struct _Teacher{ char name[64]; int age; char *p; int plen;原创 2021-02-22 22:21:50 · 1416 阅读 · 1 评论 -
牛客网题目——Nowcoder勇气获得机
勇气获得机妞妞听说Nowcoder Girl女生编程挑战赛要开始了, 但是她没有足够的勇气报名参加, 牛牛为了帮助妞妞,给她准备一台勇气获得机。初始的时候妞妞的勇气值是0, 勇气获得机有两个按钮:1、N按钮: 如果当期拥有的勇气值为x, 按下之后勇气值将变为2*x+1,2、G按钮: 如果当前拥有的勇气值为x, 按下之后勇气值将变为2*x+2,勇气值过高也会膨胀,所以妞妞需要将自己的勇气值恰好变为n, 请你帮助她设计一个勇气获得机的按键方案使妞妞的勇气值恰好变为n。输入描述:输入包括一行, 包括一原创 2021-02-13 20:40:14 · 627 阅读 · 0 评论 -
MFC入门--编写第一个MFC应用程序
文章目录编写第一个MFC应用程序代码头文件 mfc.h头文件 mfc.cppmfc没有提示配置MFC编写第一个MFC应用程序代码头文件 mfc.h#include <afxwin.h> //MFC需要包含的头文件class MyApp :public CWinApp //CWinApp 应用程序类{public: //MFC 程序入口 virtual BOOL InitInstance();};//窗口框架类class MyFrame :public CFram原创 2021-01-24 19:51:45 · 819 阅读 · 0 评论 -
MFC入门--Windows 编程模型
MFC入门–Windows 编程模型一个完整的Win32程序(#include <windows.h>),该程序实现的功能是创建一个窗口,并在该窗口中响应键盘及鼠标消息,程序的实现步骤为:WinMain函数的定义创建一个窗口进行消息循环编写窗口过程函数实现底层窗口 6步骤 1、设计窗口类 2、注册窗口类 3、创建窗口类 4、显示和更新窗口 5、通过循环取消息 6、处理消息(窗口过程)代码#include <windows.h> //底层原创 2021-01-24 16:05:25 · 242 阅读 · 0 评论 -
c++ stl string中replace的使用
c++中replace的使用string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串strstring& replace(int pos, int n, const char* s); //替换从pos开始的n个字符为字符串s举例 //替换 string s3 = "hello"; //替换从pos开始n个字符为字符串str s3.replace(1, 3, "111"); cout原创 2020-12-18 21:47:22 · 1147 阅读 · 1 评论 -
c++从入门到精通——STL综合案例(学校演讲比赛)
STL综合案例(学校演讲比赛)某市举行一场演讲比赛( speech_contest ),共有24个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。 比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛;第一轮分为4个小组,每组6个人。比如编号为: 100-123. 整体进行抽签(draw)后顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。第二轮分为2个小组,每组6人。比赛完毕,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。第三轮只剩下1组原创 2020-11-30 18:57:06 · 629 阅读 · 0 评论 -
Leetcode.234. 回文链表
234. 回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路找到前半部分链表的尾节点。反转后半部分链表。判断是否回文。恢复链表。返回结果。class Solution {public: bool isPalindrome(ListNode* head) { if原创 2020-10-23 01:35:21 · 108 阅读 · 0 评论 -
vector的几种初始化及赋值方式
vector的几种初始化及赋值方式:(1)不带参数的构造函数初始化//初始化一个size为0的vectorvector<int> abc;(2)带参数的构造函数初始化//初始化size,但每个元素值为默认值vector<int> abc(10); //初始化了10个默认值为0的元素//初始化size,并且设置初始值vector<int> cde(10,1); //初始化了10个值为1的元素(3)通过数组地址初始化int a[5] = {转载 2020-10-05 16:04:19 · 55237 阅读 · 0 评论 -
c++从入门到精通——指向类成员的指针
指向类成员的指针指向成员变量的指针#include <iostream>#include <string>using namespace std;class A{public: A(int param){ mParam = param; }public: int mParam;};void test(){ A a1(100); A* a2 = new A(200); int* p1 = &a1.mParam; int A::*p2 =原创 2020-09-19 10:07:27 · 128 阅读 · 0 评论 -
c++从入门到精通——虚函数与纯虚函数
文章目录虚函数与纯虚函数概念普通计数器多态计算器其他虚函数与纯虚函数概念首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。普通计数器普通计数器class Calculator{public: void setv1(int v) { this->val1原创 2020-09-18 21:04:15 · 283 阅读 · 0 评论 -
c++从入门到精通——虚函数表
目录多态的基本概念静态联编与动态联编虚函数表查看Animal的虚函数表查看cat的虚函数表多态的基本概念多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”和”how”分离开来。多态性改善了代码的可读性和组织性,同时也使创建的程序具有可扩展性,项目不仅在最初创建时期可以扩展,而且当项目在需要有新的功能时也能扩展。c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符重载和函数重载就是编译时多原创 2020-09-18 19:30:23 · 156 阅读 · 0 评论 -
c语言const关键字
文章目录const关键字Const修饰变量指针中的const使用1.指针是const情况2.所指的值是constConst数组实战例题解答参考const关键字转自——C语言中的const用法const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。Const修饰变量我们可以看到一旦被修饰就不能被赋值改变。指针中的const使用指针是一个变量 指针里面有两原创 2020-09-05 15:03:44 · 236 阅读 · 0 评论 -
C 库函数 - fgets()
文章目录描述声明参数实例手册描述C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。声明下面是 fgets() 函数的声明。char *fgets(char *str, int n, FILE *stream)参数str – 这是指向一个字符数组的指针,该数组存储了要读取的字原创 2020-08-14 14:50:46 · 383 阅读 · 0 评论 -
多个main怎么编译
如果一个目录中有多个c文件都有main函数,如何编译。makefile编写如下# create by ww 20200809SrcFiles=$(wildcard *.c)TargetFiles=$(patsubst %.c,%,$(SrcFiles))all:$(TargetFiles)%:%.c gcc -o $@ $< -lpthread -gclean: -rm -f $(TargetFiles)执行make即可编译。...原创 2020-08-10 08:54:16 · 927 阅读 · 1 评论 -
Debian/Deepin/Ubuntu/CentOS的man手册不全的问题
Debian/Deepin/Ubuntu的man手册不全的问题$ man 2 open在第 2 节中没有关于 open 的手册页条目。安装sudo apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix CentOS安装man手册yum install man man中文安装包yum install manpages-zh 中文sud原创 2020-07-29 14:51:15 · 2633 阅读 · 0 评论 -
c++从入门到精通——贪吃蛇
* * * * * * * * * * * * * * * * * * * @ * * * * * ** = ** = ** = ** # =原创 2020-07-06 10:18:50 · 310 阅读 · 0 评论 -
c++从入门到精通——异常变量生命周期
异常变量生命周期class MyException{public: MyException(){ cout << "异常变量构造" << endl; }; MyException(const MyException & e) { cout << "拷贝构造" << endl; } ~MyException() { cout << "异常变量析构" << endl; }};void DoWo原创 2020-06-06 19:27:22 · 207 阅读 · 0 评论