<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZH0314的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ZH0314</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ZH0314]]></copyright><item><title><![CDATA[聊天室（c/s架构）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/78176316</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/78176316</guid><author>ZH0314</author><pubDate>Sun, 08 Oct 2017 18:10:25 +0800</pubDate><description><![CDATA[项目要求：
（1）采用 Client/Server 架构 。 
（2） Client A 登陆聊天服务器前,需要注册自己的 ID 和密码。 
（3）注册成功后,ClientA 就可以通过自己的 ID 和密码登陆聊天服务器 。 
（4）. 多个 Client X 可以同时登陆聊天服务器之后,与其他用户进行通讯聊天。 
（5）.Client A 成功登陆后可以查看当前聊天室内其他在线用户 C]]></description><category></category></item><item><title><![CDATA[c++多继承]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/78063714</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/78063714</guid><author>ZH0314</author><pubDate>Fri, 22 Sep 2017 15:47:26 +0800</pubDate><description><![CDATA[1、  多继承
（1）概念：一个类有多个直接基类的继承关系称为多继承
 
（2）多继承声明语法
class 派生类名 : 访问控制 基类名1 ,  访问控制  基类名2 ,  … , 访问控制  基类名n
    {
        数据成员和成员函数声明
    }；
  类 C 可以根据访问控制同时继承类A 和类 B 的成员，并添加自己的成员



（3）多继承的派生类]]></description><category></category></item><item><title><![CDATA[c++之运算符重载基础]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/78044819</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/78044819</guid><author>ZH0314</author><pubDate>Wed, 20 Sep 2017 20:03:32 +0800</pubDate><description><![CDATA[1、  定义：所谓重载，就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义，使之实现新功能，因此，一个函数名就可以用来代表不同功能的函数，也就是”一名多用”。
2、为什么会用运算符重载机制：
用复数类举例：Complex c3 = c1 + c2;
原因 Complex是用户自定义类型，编译器根本不知道如何进行加减编译器给提供了一种机制，让用户自己去完成，自定义类型的加减操作，这]]></description><category></category></item><item><title><![CDATA[c++之构造函数和析构函数]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/78023513</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/78023513</guid><author>ZH0314</author><pubDate>Mon, 18 Sep 2017 20:41:26 +0800</pubDate><description><![CDATA[1、  构造函数：
（1）定义：
1）C++中的类可以定义与类名相同的特殊成员函数，这种与类名相同的成员函数叫做构造函数；
2）构造函数在定义时可以有参数；
3）没有任何返回类型的声明。
（2）调用：
自动调用：一般情况下C++编译器会自动调用构造函数
手动调用：在一些情况下则需要手工调用构造函数
（3）例子代码：
#include 

class test
{
public:
]]></description><category></category></item><item><title><![CDATA[c++引用]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/78006257</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/78006257</guid><author>ZH0314</author><pubDate>Sat, 16 Sep 2017 20:28:29 +0800</pubDate><description><![CDATA[C++的引用
（1）      概念：在c++中，引用的意思就是引用可以看作一个已定义变量的别名。
（2）      语法：int a = 10; int &b = a; （意思是b引用a，这个时候a和b代表同一块地址，并且有一样的数据）
（3）      例子：（普通引用）
#include 
int main()
{
	int a = 10;
	int &b = a;
	printf(]]></description><category></category></item><item><title><![CDATA[c++之命名空间和结构体]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/77970493</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/77970493</guid><author>ZH0314</author><pubDate>Wed, 13 Sep 2017 20:16:52 +0800</pubDate><description><![CDATA[（1）C++的命名空间
关键字：namespace  用来定义命名空间
一个中大型软件往往由多名程序员共同开发，会使用大量的变量和函数，不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过，没有问题时，将它们结合到一起就有可能会出现命名冲突。
 
例如很多人都参与了一个文件管理系统的开发，它们都定义了一个全局变量 fp，用来指明当前打开的文件，将他们的代码整合在一起编译时，很明显]]></description><category></category></item><item><title><![CDATA[C语言之网络编程（服务器和客户端）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/77387162</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/77387162</guid><author>ZH0314</author><pubDate>Fri, 18 Aug 2017 20:27:36 +0800</pubDate><description><![CDATA[Linux网络编程

1、 套接字：源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
常用的TCP/IP协议的3种套接字类型如下所示。
（1）流套接字（SOCK_STREAM）：
流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送，并按顺序接收。流套接字之所以能够实现可靠的数据服务，原因在于其使用]]></description><category></category></item><item><title><![CDATA[C语言之生产者与消费者模型]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/77330649</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/77330649</guid><author>ZH0314</author><pubDate>Thu, 17 Aug 2017 15:01:55 +0800</pubDate><description><![CDATA[多线程并发应用程序有一个经典的模型，即生产者/消费者模型。系统中，产生消息的是生产者，处理消息的是消费者，消费者和生产者通过一个缓冲区进行消息传递。生产者产生消息后提交到缓冲区，然后通知消费者可以从中取出消息进行处理。消费者处理完信息后，通知生产者可以继续提供消息。
要实现这个模型，关键在于消费者和生产者这两个线程进行同步。也就是说：只有缓冲区中有消息时，消费者才能够提取消息；只有消息已被处理，]]></description><category></category></item><item><title><![CDATA[C语言之模拟卖票]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/77165231</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/77165231</guid><author>ZH0314</author><pubDate>Mon, 14 Aug 2017 19:03:18 +0800</pubDate><description><![CDATA[用共享内存和信号量去模拟一个卖火车票的程序。
 
首先建立一个共享内存和一个信号量，并初始化信号量，然后用一个指针指向共享内存。然后调用一个卖票的函数，去模拟卖票的功能。
头文件
#ifndef __SEMAPHORE_H__
#define __SEMAPHORE_H__

union semun  //定义的共同体 
{
	int              val;    /* Valu]]></description><category></category></item><item><title><![CDATA[C语言之文件编程标志I/O库（2）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/77072801</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/77072801</guid><author>ZH0314</author><pubDate>Thu, 10 Aug 2017 19:53:29 +0800</pubDate><description><![CDATA[标志I/O库：C标准库提供了操作文件的标准I/O函数库，与系统调用相比，主要差别是实现了一个跨平台的用户态缓冲的解决方案。简单来说就是标准I/O的移植性更好。

（1） 函数fopen()：
#include   // 头文件
FILE *fopen(const char *path, const char *mode);   //函数原型
fopen打开由path指定的文件，并把它与一]]></description><category></category></item><item><title><![CDATA[C语言之进程控制（僵尸进程和守护进程）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/77016512</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/77016512</guid><author>ZH0314</author><pubDate>Wed, 09 Aug 2017 20:41:17 +0800</pubDate><description><![CDATA[进程控制编程
 
1、子进程先父进程先结束：如果子进程结束的时候，父进程不做任何处理，那么这个子进程的一些信息会被保留，比如子进程的文件描述符，此时的子进程会被称为僵尸进程。这种僵尸进程会给程序带来不可想象的伤害，所以我们要尽量避免僵尸进程的产生。
僵尸进程产生的过程：
（1）父进程调用fork创建子进程后，子进程运行直至其终止，它立即从内存中移除，但进程描述符仍然保留在内存中（进程描述符]]></description><category></category></item><item><title><![CDATA[C语言判断二叉树的子树]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76936255</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76936255</guid><author>ZH0314</author><pubDate>Tue, 08 Aug 2017 20:08:25 +0800</pubDate><description><![CDATA[题目：输入两颗二叉树A和B，判断B是不是A的子结构。比如：





思路：第一步在树A中找到和B的根结点的值一样的点假设为R，第二部再判断A中以R为根结点的子树是不是包含和树B一样的结构。

代码：
#include 
#include 

typedef struct _btreenode
{
	struct _btreenode *lchild;   //树的左孩子
	st]]></description><category></category></item><item><title><![CDATA[C语言之文件编程（文件1加文件2）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76860285</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76860285</guid><author>ZH0314</author><pubDate>Mon, 07 Aug 2017 20:23:22 +0800</pubDate><description><![CDATA[手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下]]></description><category></category></item><item><title><![CDATA[C语言之文件系统编程（1）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76792594</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76792594</guid><author>ZH0314</author><pubDate>Sun, 06 Aug 2017 20:14:45 +0800</pubDate><description><![CDATA[在Linux中，为了更好地保护内核空间，程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态)，它们分别运行在不同的级别上，在逻辑上是相互隔离的。因此，用户进程在通常情况下不允许访问内核数据，也无法使用内核函数，它们只能在用户空间操作用户数据，调用用户空间的函数。
1、	文件打开：Open
open()系统调用可以打开或创建一个文件。
#include 
#include 
#inc]]></description><category></category></item><item><title><![CDATA[C语言之简单计算器]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76690855</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76690855</guid><author>ZH0314</author><pubDate>Fri, 04 Aug 2017 17:34:03 +0800</pubDate><description><![CDATA[简易计算器//头函数#ifndef __1JISUANQI_H__
#define __1JISUANQI_H__

#define TRUE 1
#define FLASE 0
#define SIZE 100

typedef struct _numstack
{
	float data;
	struct _numstack *next;
}NumNode;

typedef struct _]]></description><category></category></item><item><title><![CDATA[C语言之停车场]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76690609</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76690609</guid><author>ZH0314</author><pubDate>Fri, 04 Aug 2017 17:21:21 +0800</pubDate><description><![CDATA[问题描述：停车场是一个能放 n 辆车的狭长通道，只有一个大门，汽车按到达的先后次序停放。若车场满了，车要停在门外的便道上等候，一旦有车走，则便道上第一辆车进入。当停车场中的车离开时，由于通道窄，在它前面的车要先退出，待它走后在依次进入。
 基本功能要求： 
（1） 建立三个数据结构分别是：停放队列、让路栈、等候队列。 
（2） 输入数据模拟管理过程，数据（入或出，车号）。
//头函数（一些]]></description><category></category></item><item><title><![CDATA[C语言之各种排序法及核心思想（冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76646064</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76646064</guid><author>ZH0314</author><pubDate>Thu, 03 Aug 2017 19:28:45 +0800</pubDate><description><![CDATA[#include 

void swap(int num[],int a, int b)
{
	int tmp;
		tmp = num[a];
		num[a] = num[b];
		num[b] = tmp;
}

void printfA(int *num,int len)
{
	int i;
	for(i = 0;i < len; i++)
	{
		printf("%4d",num[i]]></description><category></category></item><item><title><![CDATA[C语言之从尾到头打印链表]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76595677</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76595677</guid><author>ZH0314</author><pubDate>Wed, 02 Aug 2017 19:54:25 +0800</pubDate><description><![CDATA[从尾到头打印链表：
看完这题以后，很多人的第一反应就是从头到尾输出比较简单，于是我们很自然地想到把链表中链接结点的指针反转过来，改变链表的方向，就可以从头到尾输出了。但是该方法会改变原来链表的结构。那如果我们不该表链表的结构又怎样打印呢。


#include 
#include 

typedef struct _list
{
	struct _list *next;
	int data;
}L]]></description><category></category></item><item><title><![CDATA[C语言之递归（李白打酒）]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76559311</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76559311</guid><author>ZH0314</author><pubDate>Tue, 01 Aug 2017 20:55:17 +0800</pubDate><description><![CDATA[#include 

int count = 0;

void libai(int store, int flower,int alco, int pre, char *ch, int index)
{
	if(store == 0 && flower == 0)
	{
		if(alco == 0 && pre == 0)
		{
			int i;
			for(i = 0;i < 15; i]]></description><category></category></item><item><title><![CDATA[C语言之树]]></title><link>https://blog.youkuaiyun.com/ZH0314/article/details/76466968</link><guid>https://blog.youkuaiyun.com/ZH0314/article/details/76466968</guid><author>ZH0314</author><pubDate>Mon, 31 Jul 2017 19:48:10 +0800</pubDate><description><![CDATA[//头函数#ifndef __1TREE_H__
#define __1TREE_H__

#define FLASE 0
#define TRUE  1

struct _treenode;

typedef struct _childnode
{
	struct _treenode  *parentnode;
	struct _childnode *childnext;
}ChildNode;]]></description><category></category></item></channel></rss>