![](https://img-blog.csdnimg.cn/20191204141701815.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
编程语言C++
默茉
争做一枚地地道道的程序猿。
展开
-
进程和线程的区别
进程和线程的区别?进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变...原创 2019-11-28 21:30:05 · 118 阅读 · 0 评论 -
windows下vs2017中使用pthread库
1号坑:报错无法找到pthread头文件 下载缺失的文件地址:ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压exe文件打开下载好的exe文件,点击界面上的extract。位置看你自己喜好,记住就行。 配置聚焦目标我们用到的...转载 2019-11-28 14:38:20 · 1048 阅读 · 0 评论 -
进程间8种通信方式详解
进程通信: 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。1 匿名管道通信匿名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘...转载 2019-10-16 13:24:37 · 609 阅读 · 0 评论 -
Linux 忘记密码解决方法
Linux 忘记密码解决方法很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可。方法一:步骤如下:重启linux系统3 秒之内要按一下回车,出现如下界面然后输入e在第二行最后边输入 single,有一个空格。具体方法为按向下尖头移动到第二行,按"e"进入编辑模式,在后边...转载 2019-12-03 20:48:25 · 219 阅读 · 0 评论 -
winsock.h与winsock2.h出现重定义或不同的链接
主要原因:主要原因是因为<Windows.h>中包含了<Winsock.h>头文件,由于其版本的不同解决方案一: 添加预编译头项目属性 ——> C/C++ ———> 预处理器 -------> 预处理器定义增加如下定义WIN32_LEAN_AND_MEAN解决方案二:在编译不过的头文件前面增加#include <Wi...原创 2019-05-13 21:28:24 · 1123 阅读 · 0 评论 -
C++中创建对象的两种方法及其区别
在C++里,有两种方法创建对象:方法一:(不用new)ClassName object(param);这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。如:A a;这个是在栈上创建一个类对象 程序退出其作用域后自动调用类的析构函数.注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,...转载 2019-05-06 18:35:30 · 446 阅读 · 1 评论 -
C++中的前向声明(ForwardDeclaration)
本文描述了对C++前向声明的理解,和c++的头文件以及实现文件的重新理解,更重要的一点是对c++中两个类相互包含引用问题的总结。文章引用了部分前人经验并加上一点自己的理解,因此写下来以加深自己的理解。 1、c++的#include的预编译 例如:#include<iostream> &nb...转载 2019-05-07 10:56:14 · 7211 阅读 · 0 评论 -
C++ lambda表达式与函数对象
C++ lambda表达式与函数对象lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。但是从本质上来讲,lambda表达式只是一种语法糖,因为所有其能完成的工作都可以用其它稍微复杂的代码来实现。但是它简便的语法却给C++带来了深远的影响。如果从广义上说,lamdba表达式产生的...转载 2019-05-13 11:27:35 · 190 阅读 · 0 评论 -
mysql中文乱码问题原因
查看所有应用的字符集mysql> show variables like 'character%';Variable_nameValuecharacter_set_clientgbkcharacter_set_connectiongbkcharacter_set_databaselatin1character_set_filesystemb...原创 2019-05-13 15:18:59 · 750 阅读 · 0 评论 -
【整理】C++ string转int,string转double,string转long,int转string,double转string…
原创文章,转载请注明: 转载自勤奋的小青蛙本文链接地址: 【整理】C++ string转int,string转double,string转long,int转string,double转string…C++开发中,经常遇到各种基本类型与string的转换,掌握本博文,便可以轻松应对C++各基本类型与string的转换(比如:int转string,double转string,long转strin...转载 2019-06-10 11:19:45 · 355 阅读 · 0 评论 -
const在函数前后的区别
前面使用const 表示返回值为const后面加 const表示函数不可以修改class的成员原创 2019-07-16 18:00:46 · 516 阅读 · 0 评论 -
__declspec(dllexport) && __declspec(dllimport)
原帖地址在这:http://www.cnblogs.com/xd502djj/archive/2010/09/21/1832493.html__declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__...转载 2019-08-12 11:09:48 · 177 阅读 · 0 评论 -
vs2017中报无法打开包括文件: corecrt.h: No such file or directory,400+错误
错误显示如下:在你的解决方案下选择属性,然后在常规中有Windows SDK版本,输入正确的SDK版本即可。原创 2019-08-28 21:00:10 · 5534 阅读 · 2 评论 -
C++基础记录(二)
构造函数个析构函数:拷贝构造函数:参数是放入一个对象。加入const ,表明在拷贝的时候不能修改原有对象的值。拷贝构造函数不能匿名调用使用场景:用已经创建的对象初始化新的对象以值传递的方式给函数参数传值构造函数的调用:隐式类型转换调用:总结:深拷贝和浅拷贝:浅拷贝系统提供。多次释放同一处内存会出现内存奔溃。深拷贝:需要自己写拷贝构造函数总结:ex...原创 2019-05-05 17:30:38 · 99 阅读 · 0 评论 -
C++基础记录(三)
vector 的swap收缩空间原创 2019-05-08 12:01:30 · 105 阅读 · 0 评论 -
VS2015如何在同一个解决方案下建立多个项目
1.先按照常规的方法建一个项目:2.点击解决方案:右键=》添加=》新建项目原创 2019-05-04 15:21:14 · 9034 阅读 · 0 评论 -
VS2015中”This function or variable may be unsafe.”警告的解决办法
VS2015中”This function or variable may be unsafe.”警告的解决办法 2017年07月17日 10:47:28 heyzhuanshu 阅读数:5678更多 <div class="tags-b...转载 2018-12-10 14:58:15 · 5109 阅读 · 0 评论 -
#if #ifdef #ifndef
#if既关心宏是否定义,又关心宏的逻辑的真假#ifdef(#if defined())、#ifndef(#if !defined())仅仅关心宏是否被定义,不关心宏的#define XXX 0 // 第一段条件编译 #if XXX 逻辑1 #else 逻辑2 #endif // 第二段条件编译 #ifdef XXX 逻辑3 #else ...原创 2018-12-18 14:39:40 · 207 阅读 · 0 评论 -
error C4996: 'getenv': This function or variable may be unsafe.
error C4996: ‘getenv’: This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.在该文件最上面添加:#define_CR...原创 2018-12-29 16:48:07 · 1286 阅读 · 0 评论 -
转载 :c++编程基础知识点
c++编程基础知识点:变量声明和定义区别?声明仅仅是把变量的声明的位置及类型提供给编译器,并不分配内存空间;定义要在定义的地方为其分配存储空间。相同变量可以再多处声明(外部变量extern),但只能在一处定义。“零值比较”?bool类型:if(flag)int类型:if(flag == 0)指针类型:if(flag == null...转载 2019-03-20 18:29:39 · 203 阅读 · 0 评论 -
UDP和TCP的区别
面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。 面向字节流的话,虽然应用...转载 2019-03-20 18:31:49 · 114 阅读 · 0 评论 -
6种排序算法:冒泡、鸡尾酒、选择、插入、归并、快速
冒泡排序#include <iostream>using namespace std;void BubbleSort(int* pData,int Count)//冒泡排序{ int iTemp,i,j; for (i = 1;i < Count;i++) { for (j = Count - 1;j >= i;j--) { if (pData[...原创 2019-04-28 14:18:23 · 120 阅读 · 0 评论 -
如何学习一门语言
程序员之道,万变不离其宗,说相声讲究的是说、学、逗、唱,学习程序最快也是最好的办法就是:过、抄、仿、改、调、看、练、创、悟:1、过:学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求深解,只求了解——第一遍:无需了解太过深入的理论,大体知道这门语言是什么样的,主要面向哪些场合,一些基本的语法格式是什么样的就可以了。2、抄代码:刚开始写代码,没有多少人一上来就能立刻自己写一个很...转载 2019-05-03 15:53:58 · 1169 阅读 · 0 评论 -
指针的移动
int arr[8] = {1,2,3,4,5,6,7,8};int* p = arr;*(p+1)= 200;等同于:p++;*p = 200;等同于:arr[1]=200;原创 2019-05-03 17:30:55 · 1415 阅读 · 0 评论 -
野指针、空指针、万能指针、const指针,多级指针
//0-255都是系统保留的,不能读,也不能写野指针:(野指针是指向一个未知的内存空间,可能在读写的时候出现错误)int a = 10;int* p = &a;p = 0xff00;空指针:(指向内存编号为0的空间,操作内存空间会报错,一般用于程序的条件判断)int *p;p=NULL;*p = 100;//将会报错万能指针:int a = 10;void* p =...原创 2019-05-03 18:02:56 · 240 阅读 · 0 评论 -
文本文件的读写
文件操作1、文件分类:①文本文件(例:记事本)、②二进制文件(例:视频文件),优点:所占内存较小操作文件地址的两种方式:①相对路径 ②绝对路径2、文件打开与关闭①格式:FILE *fp = fopen(“路径”,“r”)做判断 文件是否为空;打开失败情况:①找不到文件②没有权限 ③程序打开文件超出上线;关闭文件操做:3、写文件格式:fputc(‘A’,fp)打开...原创 2019-05-04 12:30:38 · 1742 阅读 · 0 评论 -
二进制读写
二进制读写注明:C的文本读写和二进制读写应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统有关,所以"用文本方式读写的文件一定是文本文件,用二进制读写的文件一定是二进制文件"这类观点是错误的.fwrite写入格式:fread读取格式:fseek改变光标的位置从文件开始移动从文件结尾开始移动从当前位置移动:CURrweind总结:fseek() ...原创 2019-05-04 12:55:21 · 2142 阅读 · 0 评论 -
C++基础记录(一)
当库参数在vs2015中不支持时,加入宏:(报错提示:C4996错误)#define _CRT_SECURE_NO_WARNINGS双冒号作用域运算符(作用域运算符)当存在同名的局部变量,可以用双冒号引用同名全局的变量namespace主要用途 用来解决命名冲突using关键字:声明后就用该作用域的变量,如果有痛的局部变量容易产生二义性,就近原则,如果打开多个作用域,避免二义性...原创 2019-05-04 15:14:20 · 118 阅读 · 0 评论 -
String转换成整型,c_str()
代码 int main() { string s1 = “v”; string s2 = “vt”; int a = *s1.c_str(); int b = *s2.c_str(); cout << a << ” ” << b << endl; system(“pause”); }...原创 2018-09-13 11:06:20 · 1637 阅读 · 1 评论