
C++
文章平均质量分 67
三只小熊66
本人只弄技术
展开
-
数据结构-静态链表的模型
网上对链表的基本操作已经有很多,我就不班门弄斧了,我就把我以前学习,理解当中最简单的模型放出来,希望对那些觉得有点难得同学。#include #include //静态链表typedef struct Node{ int data;//数据部分 struct Node *next;//指针部分}NODE,*PNode;int main(void){ //定义变量原创 2017-10-31 18:24:12 · 306 阅读 · 0 评论 -
网络学习第四天-点对点的网络通信加强
技术1.socket的基本技术2.进程的基本技术3.信号的基本应用话不多说,直接上我的思维图。架构图代码1.服务器 ,所用技术,socket,进程,信号#include#include#include#include#include#include#include#include#include#include#include#incl原创 2017-08-24 23:39:51 · 260 阅读 · 0 评论 -
网路学习第三天
问题经过头两天的学习,我们已经把客户端和服务器的基本框架已经构建起来,说起来网络编程的最基本的框架已经给各位搭建起来,然后我发现当我启动更多的客户端的时候,不能正常的操作(ps不能正常的得到反映)然后我用命令查看netstat -na | grep 端口号我发现客户端和服务器都是链接状态,我就郁闷了,于是我想起来前段时间做阻塞服务器的时候遇到的一个问题,那就是我一旦监听了websocket,然原创 2017-08-23 22:26:51 · 200 阅读 · 0 评论 -
GBK到UTF8编码转换C++实现
由于今天发送websocket的时候浏览器使用报错,在网上查了半天都说什么字节数的关系,后来我发现其实是我的一段字符串里面没有转成utf8导致浏览器的json没有发办法解析,于是在网上搜了一个C++ gbk转ut8的尝试一下,马上ok,当场郁闷吊了。下面是转载的内容好的东西只需要拿来主义,过后研究#include #include #include #include转载 2017-08-22 14:39:20 · 632 阅读 · 0 评论 -
socket 服务器关闭以后之地址复用
1.问题的出现这个问题是当我在关掉服务器的时候,没有关掉客户端的时候出现了,于是我去查找原因后来发现说可以用地址复用解决,在我看来地址复用就是修改tcp服务器的状态而设定,这只是我的猜测。2.解决方案setsockopt这个函数,它有四个参数,详细的请查看api说明3.代码实现#include#include#include#include#include#inc原创 2017-08-20 22:39:04 · 618 阅读 · 0 评论 -
socket编程api学习二客户端的编程
代码#include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(){ int sockfd = 0; sockfd = socket原创 2017-08-20 18:48:45 · 354 阅读 · 0 评论 -
C语言结构体的字节对齐原则
为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有转载 2017-08-19 13:57:25 · 334 阅读 · 0 评论 -
网狐服务器的基本结构
以上是花了半天时间,根据调试的基本结构的出来的,给需要的朋友,也不一定完全正确,望大家一起学习进步使用。原创 2017-08-14 17:27:14 · 1138 阅读 · 0 评论 -
socket API 学习一
linux快速学习api方式在linux操作系统中如果你知道函数的名字可以通过man 函数去寻找,比如我们要学习的socket 的基础api,socket函数,bind函数等都可以通过man函数直接找到。比如socket函数然后我们根据以前学习c的方式把函数直接复制过来进行打桩,打完桩了以后我们根据实际情况进行参数的填写,三个参数的意思我们在前面都已经详细的讲过了,这样我们只需要直原创 2017-08-13 16:11:11 · 372 阅读 · 0 评论 -
UNIX网络编程-tcp套接字编程一
UNIX网络编程-TCP套接字编程socket函数函数基本#include int socket(int family,int type,int protocol);family参数致命协议,该参数也往往被称为协议域。type参数指明套接字类型,它是一个常量数值,protocol参数摸个类型常量,或者是0.socket函数在成功时返回一个小的非负整数值,它与文件原创 2017-08-12 15:59:53 · 332 阅读 · 1 评论 -
LINUX编程学习路线
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面转载 2017-08-05 17:01:48 · 792 阅读 · 0 评论 -
Linux系统编程之more命令
命令基础用法linux more 基本应用 more 文件名基本思路伪代码show 24 line form inputprintf[more?]messageinput Enter,space,or q;if Enter,advance one lineif SPACEif q---->exit代码实现#include #include #def原创 2017-02-07 14:42:06 · 346 阅读 · 0 评论 -
C++运算符重载基础
运算符重载的规则为什么要操作符重载在C++编辑器中,如果你定义的一个类型是一个基础类型,那么我们进行一个运算的话完全没有任何的问题比如,int a,b,c; c=a+b;这里的加号和我们平常理解的加号意义是完全一样的,但是如果是类的话了,我们想做一个类的加减的话,这样就不行了。所以我们才用到运算符的重载达到我们的目的。规则可以重载的运算符+ - * / %^ &原创 2017-02-06 19:32:27 · 234 阅读 · 0 评论 -
面向对象模型一点感想
基础知识1.问题首先我们用最简单的程序去探究一下我们的问题,我们都知道结构体他的大小是根据成员变量的大小进行一个操作的,这个我们在C语言中已经得到了验证,下面我们来对类的大小进行操作。代码#include "iostream"using namespace std;class C1{public: int i; int j; int k;private:};原创 2017-02-05 23:28:14 · 389 阅读 · 0 评论 -
new delete 基础应用
new delete基础基础应用#include "iostream"using namespace std;int main(){ //1.基础的使用 //new 基本类型 int *p = (int *)malloc(sizeof(int)); free(p); int *p2 = new int; delete p2; //分配数组 int *p3 = ne原创 2017-02-05 16:48:39 · 279 阅读 · 0 评论 -
模板函数的基础应用
#include using namespace std;//template告诉C++编辑器要进行泛型编程 T在这里是一种类型template//数据类型参数化void myswap(T &a,T &b){ T t = a; a = b; b = t;}void main(){ int a1 = 10; int b1 = 20; myswap(a1,b1);//原创 2017-02-04 15:54:14 · 204 阅读 · 0 评论 -
函数指针基础
知识点如果调用函数名,就是调用函数在内存中的首地址。int test(int a)//参数要和函数匹配{ printf("a%d\n", a); return 0;}void main(){ typedef int(*pm)(int); pm myp = NULL; test(2); myp = test; myp(10);}这里我原创 2017-01-15 23:37:30 · 263 阅读 · 0 评论 -
.h分离类
.h文件进行声明类在学习c语言的时候我们就用到过.h文件,他可以对一些方法进行声明,然后我们用.c文件去实现.h文件的函数,这样我们就可以在任何一个地方只需要这个.h文件在使用的范围就可以进行使用,在前面我们也进行了lib,dllwindows打包和linux下面打包的操作,在这上面都用到了.h文件,他就是一个辅助的文件,用来做一些声明和定义的作用。这次我们用到的是C++利用C++的类概念,我原创 2017-01-15 22:32:52 · 332 阅读 · 0 评论 -
C++学习第四天
学习第四天1.类的基本定义1.有一个关键字class2.类的最重要的两个东西,变量和函数,在类里面变量叫做成员变量这个概念相信大家在结构体里面有一定了解,另一个就是函数,在类里面叫做成员函数。所以我们描述一个类最关键的两点就是变量和函数,而这个是我们程序的基础,所以我想大家在学习一个新的知识的时候一定要回去把老的知识都运用起来,比如之前讲过的函数的参数类型,各种最最重要的是函数参数为指原创 2017-01-15 14:23:53 · 228 阅读 · 0 评论 -
C++对C函数加强(第三天学习)
第三天学习1.内联函数1.关键字inline2.带参数的define替换#include #define MYFUNC(a,b) ((a)<(b)?(a):(b))//带参数的宏替换inline int myfunc(int a,int b){ return a<b?a:b;}using namespace std;int main(){ int a =原创 2017-01-11 08:24:23 · 293 阅读 · 0 评论 -
指针引用的基本应用
#include using namespace std;struct Teacher{ char name[64]; int age;};int getTe(Teacher **myp){ Teacher *p = (Teacher *)malloc(sizeof(Teacher)); if (p == NULL) { return -1; } memset(原创 2017-01-10 00:21:15 · 255 阅读 · 0 评论 -
引用作为函数返回值的几种应用
#include using namespace std;int getAA(){ int a; a = 10; return a;}int& getAAA(){ int a; a = 10; return a;}int* getAAAA(){ int a; a = 10; return &a;}//static修饰一个变量的时候是一个状态变量in原创 2017-01-10 00:04:49 · 578 阅读 · 0 评论 -
C++学习第二天
第二天学习1.输入输出1.C语言的输入输出#define _CRT_SECURE_NO_WARNINGS#include #include int main(){ //c语言的输出 printf("HelloWorld\n"); //输入 int a = 0; scanf("%d\n", &a); printf("%d\n", a); return 0;}原创 2017-01-08 16:47:03 · 291 阅读 · 0 评论 -
Kbengine游戏服务器搭建
这个服务器据说是bigword中文版,在这个群里认识了很多的C/C++的大牛,于是决定使用一下,刚好这个上面有现在最流行的几个游戏的框架的demo,u3d,cocos2d-x,js,还有一个3d的引擎没有听说过,但是自己想学习的u3d和js这两个都可以直接有demo这样我就直接开始搭建服务器和客户端,客户端的程序只要插件和u3d的源码就可以进行运行,客户端和服务器源码都在https://githu原创 2017-01-07 09:30:02 · 1633 阅读 · 0 评论 -
C++学习第一天
1.程序设计方法的发展设计思路自顶向下,逐步完善。采用模块费解与功能抽象,自顶向下,分而治之。程序结构1.按照功能划分为若干基本模块,形成一个树状的结构2.各个模块之间关系尽可能的简单,功能上相对独立;每一个模块都是由顺序,选择和循环三种基本结构组成。3.其模块化实现的具体方法使用子程序。优点有效的将一个复杂的程序系统设计任务,分解成许多易于控制的处原创 2017-01-04 01:33:21 · 282 阅读 · 0 评论 -
c语言的推箱子
基础知识点储备1.简单的C语言语法基础2.数组与二维数组3.指针4.函数5.全局变量与局部变量6.动画的简单原理项目分析步骤1.显示游戏的地图2.输入小人的前进的方向3.根据前进方向来移动小人框架搭建1.显示我们的游戏地图(1)知道每一个格子的类型,所以要每一个格子都要存起来(2)使用二维数组来存储2.让用户输入小人的移动方向功能原创 2017-01-02 20:53:42 · 776 阅读 · 0 评论 -
动态编写socket
创建动态文件dll和lib创建工程创建dll工程这个大家可以百度一下我这里就直接贴相关的代码创建一个wbsocket.h代码如下int cltSocketInit(void **headle);int cltSocketSend(void *handle, unsigned char *buf, int buflen);int cltSocketRev(void *h原创 2017-01-02 17:19:30 · 415 阅读 · 0 评论 -
玩转多级指针
首先上代码#include #include //把谁的地址传过来就是间接的修改谁的数值//用一级指针去间接修改0级指针实参int getLen(int *p){ *p = 30; return 0;}int main1(){ int a = 0; int *p = NULL; p = &a; *p = 20; printf("%d\n", *p);原创 2017-01-02 13:33:48 · 402 阅读 · 0 评论 -
gdb调试代码
gdb纲要题外话:当我第一次看到这个名字的时候我以为我看错了哈哈,gdb我还以为是gdp了,我是一个马刺的死忠,不撤了马上进入正题,由于linux下调试代码每次都截图比较麻烦,我就不截图把主要的命令都写下来,这些就是在调试代码中常用的命令,能力有限有错误的地方希望有朋友看到给一个提示一起讨论。0.前奏首先我们要把我们的代码用gcc 编译成.o文件,当然编译的时候我们还不要忘记有一个关键原创 2016-12-18 14:48:39 · 412 阅读 · 0 评论 -
linux下面的静态库和动态库的创建
linux下创建静态库和动态库普及知识1.静态库的好处由于我们做技术的价值就是核心的代码编写,所以我们一般后期都会把文件用静态库或者动态库的形式封装起来,这样我们只用给头文件和库文件这样就够了。这使我们的源码得到了一定程度上的保护。2.windows和linux的库文件windows上面由于vs的强大很多的功能都可以在上面直接点击或者配置一些信息就可以生成,原创 2016-12-17 23:58:37 · 396 阅读 · 0 评论 -
文件综合应用-配置文件的读写修改
总纲领1.分析首先我们建一个.h文件。我们知道.h文件就是函数声明,如果代码//1.分清楚功能 //2.分清楚功能的输入和输出//3.实现代码//功能//1.写配置文件//参数:向什么地方写,写key,写vailueint WriteFile(const char *pfile/*in*/, char *key/*in*/, char *value/*in*/);//2原创 2016-12-11 20:04:01 · 303 阅读 · 0 评论 -
文件读写二 -按照行读写
#define _CRT_SECURE_NO_WARNINGS#include#include#include/*学习内容按行读取内容apifwritefreadfputsfgets*///写void main01(){ int i = 0; char *url = "d:/1.txt";//路径 char buf[100] = "abcdefg111111原创 2016-12-11 15:56:36 · 280 阅读 · 0 评论 -
文件的基本操作-字符的读写
#define _CRT_SECURE_NO_WARNINGS#include#include#include/*今天学习内容的基本1)文件的读写2)文件控制3)api做一些基本的项目基本aip的使用fopen语法:#include FILE *fopen( const char *fname, const char *mode );fopen()函数打开由fname原创 2016-12-11 15:28:32 · 331 阅读 · 0 评论 -
结构体-元素的偏移量
后面的各位可以根据自己定义的数据去查看一下是否是对应的偏移量。原创 2016-12-06 22:46:58 · 713 阅读 · 0 评论 -
结构体-内涵二级指针操作
#define _CRT_SECURE_NO_WARNINGS#include#includetypedef struct _Teacher{ char name[64]; int age; char *title; char **pStd;//学生}Teacher;//打开内存Teacher *createMem(int len){ int i = 0,j = 0;原创 2016-12-06 13:50:23 · 519 阅读 · 0 评论 -
结构体-内含一级指针变量的操作
#define _CRT_SECURE_NO_WARNINGS#include#include//结构体typedef struct _Teacher{ char name[64];//名字 int age;//年龄 char *title;//职称}Teacher;//打印函数int printfArray(Teacher *pArr,int len){ if (p原创 2016-12-06 00:23:46 · 439 阅读 · 0 评论 -
结构体作为函数参数-malloc操作
#define _CRT_SECURE_NO_WARNINGS#include#include#include//定义一个结构体typedef struct _Teacher{ char name[64]; int age;}Teacher;int printfArr(Teacher *to,int len){ int i = 0; for ( i = 0; i <原创 2016-12-05 23:20:16 · 1583 阅读 · 0 评论 -
结构体的基本操作-结构体作为函数的参数
#define _CRT_SECURE_NO_WARNINGS#include#include#include//1.这样只是定义了一个结构体没有分配内存typedef struct _Teacher{ char name[69]; int age;}Teacher;//可以进行复制void cpStruct(Teacher *p1, Teacher *p2){ *原创 2016-12-05 15:51:28 · 292 阅读 · 0 评论 -
结构体的基本应用
#include#include#include//1.这样只是定义了一个结构体没有分配内存typedef struct _Teacher{ char name[69]; int age;}Teacher;int main(){ Teacher tl;//分配内存这里栈的 //struct Teacher *p = (struct Teacher *)malloc(s原创 2016-12-05 11:45:01 · 276 阅读 · 0 评论 -
一级指针-野指针
一级基础指针的使用基础使用#define _CRT_SECURE_NO_WARNINGS#include#include#includeint main(){ char *p = NULL;//一级指针 p = (char *)malloc(100 * sizeof(char)); strcpy(p, "abcdefg"); printf("%s\n", p);原创 2016-12-04 21:12:28 · 319 阅读 · 0 评论