
c++
倾耳听
这个作者很懒,什么都没留下…
展开
-
void*
const char s1[] = "hhh";const char s2[] = "hhh";const char* s3 = "hhh";const char* s4 = "hhh";cout << (void*)s1 << " " << (void*)s2 << endl;cou原创 2018-12-07 10:25:05 · 154 阅读 · 0 评论 -
数据结构二叉树的遍历和高度
先序遍历:根左右中序遍历:左根右后序遍历:左右根二叉树的节点定义typedef struct Node{ DataType data; struct Node* leftChild; struct Node* rightChild;}BiTreeNode;先序遍历void PreOrder(BiTreeNode* t){ if(...原创 2018-07-24 18:18:33 · 269 阅读 · 0 评论 -
union、结构体(class)占用字节数及存储与空间分配
union变量所占用的内存长度等于最长的成员的内存长度。struct和class内存中存储形式一样(函数不占内存空间)。struc还有一种:位域操作法我们都知道在数据类型中,char类型占1个字节,short占2个字节,int占4个字节,long占8个字节等等。在计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放的,每个单元多大取决于结构体中最大基本类型的大小,下面...转载 2018-07-24 17:22:09 · 5442 阅读 · 0 评论 -
浅拷贝和深拷贝
类有一个特殊的成员函数:复制构造函数默认形式Class_name(const Class_name &);浅拷贝class CExample {private: int a;public: CExample(int b) { a=b;} CExample(const CExample& C) { a=C.a; } vo...原创 2018-07-03 18:44:01 · 114 阅读 · 0 评论 -
析构函数
析构函数的调用:一、自定义函数中的对象。函数结束会调用二、delete时。三、显示调用。原创 2018-07-03 16:17:50 · 176 阅读 · 0 评论 -
struct节点写法
struct aa{public: int a; aa* bb; // 可以这样写的};原创 2018-07-03 15:24:17 · 480 阅读 · 0 评论 -
new完之后不delete,变量会一直保存
#include "stdafx.h"#include <iostream>using namespace std;class aa{public: int a; virtual void set(int i) { a = i; }};aa* cc[4];void chuangjian(){ aa* b = new aa; b->set(73); cc[1] = b;}int ...原创 2018-06-22 17:54:09 · 3059 阅读 · 0 评论 -
单例模式的实现
class CSingleton{private: CSingleton() // 构造函数私有 防止使用构造函数赋予新的地址 { } static CSingleton *p;public: static CSingleton* getInstance() // 提供一个获取地址的接口 { ...原创 2018-05-09 16:26:21 · 119 阅读 · 0 评论 -
error LNK1169: 找到一个或多个多重定义的符号
问题出现的原因,是因为一个变量在一个头文件声明,但是却在2个及以上的.cpp文件中定义。解决方案,一般编译器会告诉你是哪个变量出现问题,你需要定位到那个变量,然后,删除其中一个多余的变量定义还有一种无奈的解决方法,你打开项目-》配置属性-》连接器-》命令行,输入以下字符串,以允许多重定:/force:multiple原创 2018-03-27 14:01:41 · 2585 阅读 · 2 评论 -
需要熟悉的知识
一、类模板二、动态数组存储数据(例:宝马神驹的奖励,参考任务模块的)三、指针开辟空间,存内容四、类数组,不用数组的形式原创 2018-01-09 19:33:12 · 163 阅读 · 0 评论 -
gdb 调试 && vs调试
一、先要生成二进制文件g++ -g 1.cpp -o 1.out (-g参数不要省,不然 gdb l 参数用不了)二、参数设置断点 :设置 函数断点 break func(),在某行设置断点 break 7查看断点信息:info break删除断点:d (删除所有断点) d 3 (删除第三个)运行:r 下一步:n 逐过程步进,不会进入子函数(类似VS里的F10)下一步:s step逐语...原创 2017-11-13 18:21:24 · 227 阅读 · 0 评论 -
typedef函数指针的应用
typedef int (*MyFUN)(int a,int b);int Max(int a, int b){ return a > b ? a : b;}int main(int argc, char** argv){ MyFUN pMyFun; pMyFun = Max; cout << pMyFun(1, 2) <<...转载 2018-01-08 18:07:26 · 162 阅读 · 0 评论 -
C/C++学习路线
C/C++学习路线随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者。而在今天,它又扮演着什么样重要的角色呢?请往下看:后端服务器,移动互联网后端,经典Windows界面开发,移动互联网端界面开发,跨平台界面开发,图形分析,系统架构,应用设计,还有现在最为流行的分布架构等一些新的技术领域。 这么牛的语言,...转载 2018-09-18 13:36:06 · 189 阅读 · 0 评论 -
c++ string类的实现
原文:http://noalgo.info/382.htmlString是C++中的重要类型,程序员在C++面试中经常会遇到关于String的细节问题,甚至要求当场实现这个类。只是由于时间关系,可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。String的实现涉及很多C++的基础知识、内存控制及异常处理等问题,仔细研究起来非常复杂,本文主要做一个简单的总结和归纳。 一 整体...转载 2018-09-20 22:47:36 · 170 阅读 · 0 评论 -
认识cpu、核、进程与线程
cpu:自己的电脑一般一个cpu,服务器会有多个cpu。核:有多个核(4、8、16)。对比 进程 线程 定义 进程是程序运行的一个实体的运行过程,是系统进行资源分配和调配的一个独立单位 线程是进程运行和执行的最小调度单位 系统开销 创建撤销切换开销大,资源要重新分配和收回 仅保存少量寄存器的内容,开销小,在进程的地址空间执行代码 拥有资源 ...原创 2018-11-13 16:49:31 · 851 阅读 · 0 评论 -
网络编程
参考一:https://blog.youkuaiyun.com/daoming1112/article/details/54698466/ 粘包问题参考二:https://blog.youkuaiyun.com/chenchukun/article/details/78991215 tcp/udp创建步骤原创 2018-11-06 22:19:46 · 110 阅读 · 0 评论 -
Makefile
转自:https://www.cnblogs.com/wang_yb/p/3990952.htmlMakefile 使用总结1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如...转载 2018-11-06 21:59:16 · 173 阅读 · 0 评论 -
linux常用命令
Linux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用...转载 2018-11-06 21:53:15 · 163 阅读 · 0 评论 -
字符分割
std::vector<std::string> split(const std::string &str, const std::string &pattern){ std::vector<std::string> resVec; //方便截取最后一段数据 std::string strs = str + pattern; ...原创 2018-10-24 22:08:57 · 263 阅读 · 0 评论 -
智能指针的使用条件和缺陷
一、auto_ptr不支持复制(拷贝构造函数)和赋值(operator =),编译不会提示出错。不要使用两个auto_ptr指针指向同一个指针;不要使用auto_ptr指向一个指针数组,因为auto_ptr的析构函数所用的是delete而不是delete[],不匹配;不要将auto_ptr储存在容器中,因为赋值和拷贝构造后原指针无法使用。 还有最重要的一点就是,什么情况下也别使用...原创 2018-10-26 16:42:43 · 1418 阅读 · 0 评论 -
linux编程
多进程Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程...原创 2018-10-29 18:06:20 · 147 阅读 · 0 评论 -
反转合并链表
反转链表node* reverseList(node* H){ if (H == NULL || H->next == NULL) //链表为空或者仅1个数直接返回 return H; node* p = H, *newH = NULL; while (p != NULL) //一直迭代到链尾 { ...原创 2018-10-17 10:25:04 · 251 阅读 · 0 评论 -
extern c的作用
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言语法进行编译,而不是C++的。extern 是变量或函数的申明,告诉编译器在其它文件中找这个变量或函数的定义。这里需要的是“声明”,不是“定义”!根据C++标准的规定,一个变量声明必须同时满足两个条件,否则就是定义: (1)声明必须使用extern关键...原创 2018-10-17 09:38:52 · 9910 阅读 · 1 评论 -
数据结构算法
冒泡排序:比较相邻两个数的大小,每次找出最大的,然后循环次数减1void bubble_sort(int arr[], int len){ int i, j,temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] >...原创 2018-10-08 18:43:54 · 142 阅读 · 0 评论 -
数据库查询
数据库引擎:myisam快速读取,但不支持数据恢复、外键。innodb支持数据恢复和外键,但读取慢多表联合查询多表联合查询可以通过连接运算实现,而连接运算又可以通过广义笛卡尔积后在进行选择运算来实现。Select 多表联合查询语句Select 列名 [[,列名]...] from 表名1,表名2,,... Where 查询条件; 可以使用as为表或者字段(属性)取别名;...转载 2018-09-20 23:09:24 · 177 阅读 · 0 评论 -
Linux 服务器配置
下载代码 :svn co 地址一、创建数据库在sql语句目录下:登录: mysql -uroot -pwebgame 创建: create database name;创建表: source DBTable.sql source DBProcedure.sql source init_GameDB.sql source update.sql原创 2017-11-03 14:38:35 · 191 阅读 · 0 评论 -
c++类的前置声明
class a;class B{public: B(){} a *c;};int i = 9;class a{public: void print() { cout << "hello" << endl; }};int main(int argc, char** argv){ B b; b.c->pri原创 2018-01-04 18:05:34 · 225 阅读 · 0 评论 -
STL模板的容器理解
序列式容器:只存储value关联式容器:存储key和value,且容器排好序。通常由二叉树来实现。一、vectorvector动态数组,所以不仅使用迭代器可以输出vector,使用vector[1]方式同样可以输出值。数据连续。删除操作:例如 1 2 2 3 4 判断删除一个2后 还剩下 1 2 3 4 因为后边的2 3 4 依次向前进 指针指到3的位置。...原创 2017-12-18 17:43:25 · 211 阅读 · 0 评论 -
lua
一、Lua堆栈要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。在Lua中,Lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶。如图: lua的栈类似于以下的定义, 它是在创建lua_State的原创 2017-10-30 15:26:40 · 178 阅读 · 0 评论 -
遍历文件夹
// readXml.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include "tinyxml\tinyxml.h"#include #include #include #include using namespace std;vector floderBianLi(const char* fileName){原创 2017-10-18 16:14:02 · 129 阅读 · 0 评论 -
vs c++使用lua
一、下载lua,我下载的是lua.5-3-4二、编译生成lua.lib文件使用vs创建静态库项目,添加文件(加压后有个src,添加下面的所有文件除了lua.c与luac.c)。然后运行。但是会报错,例如:什么什么文件版本过早之类的。右击相应的文件,“属性”---》“预编译头”---》“预编译头”,选择“不使用预编译头”。再运行,就会编译成功,生成lua.lib文件三、使用lua原创 2017-10-27 11:13:05 · 447 阅读 · 0 评论 -
c++ 类
全局变量、静态变量储存在静态数据区,局部变量在栈中C++,在类中为什么不能给数据成员初始化值:因为类只是定义的类型, 还没有实例化,也就是没有定义类的对象(变量), 没法存储你可以在初始化列表里进行初始化 , 而构造函数的函数体之内赋值的话, 是在初始化后,至于定义成static的, 这是静态的, 所有对象共享一个副本, 程序开始执行就初始化了, 就算没有定义对象, 也有它原创 2017-09-22 11:37:23 · 146 阅读 · 0 评论 -
c++字符串转换字符指针
string str2 = "hello";const char *str = str2.c_str(); //要加const,否则报错原创 2017-10-17 19:23:50 · 1671 阅读 · 0 评论 -
C++继承:公有,私有,保护
私有继承(private)、保护继承(protected)、公有继承(public)是常用的三种继承方式。1. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。2. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类原创 2017-09-14 11:31:02 · 216 阅读 · 0 评论 -
使用TinyXML读取xml文件中文乱码
// readXml.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include "tinyxml\tinyxml.h"#include #include using namespace std;#define U (CUtf8String) #define W (CGb2312String)class转载 2017-10-17 17:56:36 · 2673 阅读 · 0 评论 -
调用函数用指针改变一个变量的值
// easyTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;void change(int* a){ int i = 7; //a = &i; //对a进行操作 相当于另一个变量的操作 *a = i; //对j进行操作 替换内容而地址不变 cout原创 2017-09-25 14:54:32 · 1423 阅读 · 0 评论 -
c++ string类的使用
string 是基本的字符串序列容器,对应数据结构中的串,和vector也类似,但功能更多string 容器的使用 1,string 的构造函数是。 string() 2,string的添加函数,。 insert(),push_back() 3,string的遍历。 数组形式遍历,迭代器形式遍历 4,string的字符串替换 replace(转载 2017-09-22 14:47:13 · 272 阅读 · 0 评论 -
Struct和Class的区别
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class转载 2017-09-14 11:46:44 · 228 阅读 · 0 评论 -
与指针有关的操作
求字符串长度 strlen就收的是一个 char * 参数char* p1 = "abcd";cout 输出结果:4string a = "aasdf"; 不能用strlen()函数cout原创 2017-10-13 11:12:33 · 195 阅读 · 0 评论 -
指针直接赋值与strcpy区别
char* p1="abcdefg";char* p2;p2=p1;strcpy(p2,p1);p2=p1;strcpy(p2,p1);这两个语句有什么区别??解析:没分配内存空间不能直接strcpystrcpy需要复制到一个有效的,能存储字符串的空间,而p2只是一个地址,能存的也是一个地址。申请空间:char*p2 = (char*)malloc(sizeo...原创 2017-09-26 10:59:07 · 2484 阅读 · 1 评论