<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[VVVv_0427的博客]]></title><description><![CDATA[C语言大作战行动]]></description><link>https://blog.youkuaiyun.com/VVVv_0427</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; VVVv_0427]]></copyright><item><title><![CDATA[【C++】虚继承——菱形继承问题（内存布局图解）]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/87722580</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/87722580</guid><author>VVVv_0427</author><pubDate>Tue, 19 Feb 2019 19:32:06 +0800</pubDate><description><![CDATA[【C++】虚继承——菱形继承问题（内存布局图解）

（这一块的内容给出七个例子来理解~有问题的话可以评论留言哟）



先给出一段含有虚继承的代码：


#include&amp;lt;iostream&amp;gt;
using namespace std;

class A
{
public:
    A(int a):ma(a){}		
public:	
	int ma;
};

class B:virtu...]]></description><category></category></item><item><title><![CDATA[隐藏和覆盖、多态、虚函数【C++】]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/86498585</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/86498585</guid><author>VVVv_0427</author><pubDate>Tue, 15 Jan 2019 21:30:18 +0800</pubDate><description><![CDATA[【C++】隐藏和覆盖

隐藏： overhide 派生类中隐藏了基类中所有的同名函数

①同名、不同参

②继承关系下的不同作用域

覆盖：派生类中同名同参的虚函数覆盖基类中同名同参的虚函数

①同名同参

②继承关系下的不同作用域

③均为虚函数

 

隐藏：


class  Base
{
public:
	Base(int a) :ma(a){}
	 void Show()
	{
		st...]]></description><category></category></item><item><title><![CDATA[【C++】继承①]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/86312560</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/86312560</guid><author>VVVv_0427</author><pubDate>Fri, 11 Jan 2019 19:44:16 +0800</pubDate><description><![CDATA[【C++】继承①

继承的写法

类标识 类名 : 继承方式 基类名称

继承的本质：代码复用

例如：class Student : public People (Student是子类/派生类，People是父类/基类，Student以public方式继承了People类)


#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
using names...]]></description><category></category></item><item><title><![CDATA[【C++】类的6个默认函数（一）]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84841725</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84841725</guid><author>VVVv_0427</author><pubDate>Wed, 05 Dec 2018 20:08:08 +0800</pubDate><description><![CDATA[【C++】类的6个默认函数（一）

（本blog主要讲前三个类的默认函数，即：构造函数、析构函数、拷贝构造函数）

类的6个默认函数为：

1、构造函数

2、析构函数

3、拷贝构造函数

4、赋值运算符的重载函数

5、取地址操作符的重载函数

6、const修饰的取地址操作符的重载函数

特点：共有的、内联的

对象的生成：

1、开辟内存

2、对对象的内存空间进行初始化（调用构造函数）
...]]></description><category></category></item><item><title><![CDATA[【C++】类和对象]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84841185</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84841185</guid><author>VVVv_0427</author><pubDate>Wed, 05 Dec 2018 19:15:35 +0800</pubDate><description><![CDATA[【C++】类和对象

类和对象oop：是对现实中一组具有相同特征的实体模型。



属性：独享

行为：共享

举一个学生类的例子：


#include&amp;lt;iostream&amp;gt;

class Student
{
public:
	void eat()
	{
		std::cout&amp;lt;&amp;lt;mname&amp;lt;&amp;lt;&quot;is eating&quot;&amp;lt;&amp;lt;std::endl;
	}
	...]]></description><category></category></item><item><title><![CDATA[namespace名字空间作用域、using]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84591961</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84591961</guid><author>VVVv_0427</author><pubDate>Wed, 28 Nov 2018 20:57:23 +0800</pubDate><description><![CDATA[namespace名字空间作用域、using

namespace名字空间作用域

namespace名字空间作用域用于解决名字相同冲突的问题。

using namespace std;//C++标准std

以下代码就明显的表示了namespace中的变量和全局变量之间的调用区别。


namespace FYW
{
	int a=10;
	int Sum(int a,int b)
	{
		...]]></description><category></category></item><item><title><![CDATA[new和delete]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84581588</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84581588</guid><author>VVVv_0427</author><pubDate>Wed, 28 Nov 2018 11:40:09 +0800</pubDate><description><![CDATA[new和delete

C语言中使用的是malloc动态开辟内存，用free销毁内存。


//C语言malloc、free
int main()
{
	//①
	int *p1=(int *)malloc(sizeof(int));
	free(p1);
	//②
	int *p2 = (int *)malloc(sizeof(2));
	free(p2);
}

以上代码可以发现，①是mall...]]></description><category></category></item><item><title><![CDATA[【Linux】管道文件（有名管道、无名管道）]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84452479</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84452479</guid><author>VVVv_0427</author><pubDate>Sat, 24 Nov 2018 21:55:18 +0800</pubDate><description><![CDATA[【Linux】管道文件（有名管道、无名管道）

多进程编程的目的就是为了同时完成多个任务。

例如：一个产品，一个软件，需要n个进程同时执行才能完成，而这些进程之间一定是有所联系的。

因此：多进程工作时，进程间需要通讯（传递数据）。

fork()创建的子进程，与父进程之间唯一共享的是文件描述符。

 

进程之间的通讯方式有：

管道
	信号量
	消息队列
	共享内存
	Socket （用于网...]]></description><category></category></item><item><title><![CDATA[【C++】调用约定+返回值的返回方式]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84073053</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84073053</guid><author>VVVv_0427</author><pubDate>Wed, 14 Nov 2018 20:13:38 +0800</pubDate><description><![CDATA[【C++】调用约定+返回值的返回方式

调用约定

①_cdecl C标准调用约定

调用方开辟内存，调用方清理

②_stdcall Windows标准调用约定

调用方开辟内存，被调用方清理

③_fastcall 快速调用约定

最多使用2个寄存器代入实参，其他参数和_stdcall的处理方式相同

即：调用方开辟内存，被调用方清理

④_thiscall 成员方法的调用约定

 

调用约...]]></description><category></category></item><item><title><![CDATA[【C++】函数堆栈调用(含一些简单汇编指令)]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/84072647</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/84072647</guid><author>VVVv_0427</author><pubDate>Wed, 14 Nov 2018 20:05:54 +0800</pubDate><description><![CDATA[【C++】函数堆栈调用(含一些简单汇编指令)

关于汇编的一些知识点+指令

Windows：Inter x86

Linux：AT&amp;amp;T

指令：

①mov 移动数据

例如：mov , dword ptr[ebp-4] , 0ah;

(ebp:栈底指针寄存器)

②lea 移动地址

例如：lea , eax , [ebp-4];

③push 压栈

例如：push 0ah;

④...]]></description><category></category></item><item><title><![CDATA[【C++】编译、链接、运行原理+强弱符号]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83962481</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83962481</guid><author>VVVv_0427</author><pubDate>Wed, 14 Nov 2018 19:16:58 +0800</pubDate><description><![CDATA[【C++】编译、链接、运行原理+强弱符号

虚拟地址空间

作用：进程地址空间需要隔离，防止恶意的程序修改其他程序的内存数据，所以计算机需要虚拟地址空间



其中：

.data:已经初始化，并且初始化不为0的数据。

.bss：未初始化，或者初始化为0的数据。

例如：


#include&amp;lt;stdio.h&amp;gt;
extern int gdata;
extern int Sum(int...]]></description><category></category></item><item><title><![CDATA[【数据结构】【排序】选择排序(直接选择排序、堆排序)]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83590803</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83590803</guid><author>VVVv_0427</author><pubDate>Wed, 31 Oct 2018 21:47:49 +0800</pubDate><description><![CDATA[【数据结构】【排序】选择排序

①简单选择排序

每次从序列中找出最大/最小元素，插入已排列部分的最后。

过程：

1、设一个变量min，先放在第一个元素的位置，设i，j，i=0，j=i+1。

2、在未排序数组中找到最小的赋给min，与i比较，开始交换

3、i++  j++



代码展示：


//简单选择排序
#include&amp;lt;stdio.h&amp;gt;
void SimpleSele...]]></description><category></category></item><item><title><![CDATA[【数据结构】【排序】插入排序(直接插入排序、希尔排序)]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83545446</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83545446</guid><author>VVVv_0427</author><pubDate>Tue, 30 Oct 2018 17:43:56 +0800</pubDate><description><![CDATA[【数据结构】【排序】插入排序

插入排序可分为直接插入排序及希尔排序

①直接插入排序

步骤如下：

1、将数组分为2部分：已排序部分、待排序部分

2、每次从待排序部分中拿出元素，在已排序部分中找到合适的位置插入元素

思想：将一个记录插入到已排序好的有序表中，从而得到一个新记录数增1的有序表。即：先将序列的第一个记录看成是一个有序的子序列，然后从第二个记录逐个进行插入，直至整个序列有序为止。...]]></description><category></category></item><item><title><![CDATA[【Linux】用户管理]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83349647</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83349647</guid><author>VVVv_0427</author><pubDate>Wed, 24 Oct 2018 20:14:00 +0800</pubDate><description><![CDATA[【Linux】用户管理

Linux允许多用户同时登陆工作的系统。

root 超级管理员，拥有最高权限，是第一启动设置的用户

管理员分配：root用户能够管理其他用户

关于用户的信息存储位置

①/etc/passwd 存储密码





②/etc/group 组





③/etc/shadow 加密





加密算法ID：MD5 以及秘钥

参考其他blog含义如下：https:/...]]></description><category></category></item><item><title><![CDATA[【Linux】进程管理命令]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83316871</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83316871</guid><author>VVVv_0427</author><pubDate>Wed, 24 Oct 2018 19:55:07 +0800</pubDate><description><![CDATA[【Linux】进程管理命令

进程管理命令

进程：运行中的程序（是一个动态的过程概念）执行时，将程序加载到内存上

程序：存储在磁盘上的可执行的二进制文件



时间片轮转法：

CPU的执行时间划分为很小的时间片，每个进程在CPU上运行，一次只分配一个时间片。

 

Linux系统上，/proc虚拟目录，以内存为单位存储内存映射。

操作系统为了唯一标识一个进程，会给进程分配一个ID——PI...]]></description><category></category></item><item><title><![CDATA[【Linux】文本编译器命令模式下的操作（光标的移动、搜索字符串操作）+文件的查看压缩操作]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83095857</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83095857</guid><author>VVVv_0427</author><pubDate>Tue, 23 Oct 2018 22:29:59 +0800</pubDate><description><![CDATA[【Linux】文本编译器命令模式下的操作（光标的移动操作）+文件的查看压缩操作

输入vim/vi进入文本编译器中，在命令模式下，

光标的移动命令操作：

shift+4 ：将光标移到本行最后一个位置

shift+6 ：将光标移到本行第一个位置

gg：将光标移到第一行

G / shift+g：将光标移到最后一行

行号n+shift+g（G）：将光标移到第n行

如果出现文本过长的情况，一...]]></description><category></category></item><item><title><![CDATA[【数据结构】带头结点的单链表]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/83069050</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/83069050</guid><author>VVVv_0427</author><pubDate>Tue, 16 Oct 2018 11:39:38 +0800</pubDate><description><![CDATA[【数据结构】带头结点的单链表

链表：逻辑连续，物理上不一定连续

带头结点的单链表：



结构体：


//定义结构体
typedef int ELEM_TYPE;
typedef struct Node
{
	ELEM_TYPE mdata;
	struct Node* pnext;
}Node,*Link;


尾插：




//给尾部插入
bool InsertTail(Link ph...]]></description><category></category></item><item><title><![CDATA[【数据结构】定长顺序表]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/82899742</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/82899742</guid><author>VVVv_0427</author><pubDate>Sat, 29 Sep 2018 18:19:44 +0800</pubDate><description><![CDATA[【数据结构】顺序表

关于基础数据结构，分为两类：

①线性：数组、链表、顺序表

②非线性：树、图

 

顺序表和链表的区别：

顺序表：逻辑连续、物理连续

链表：逻辑连续、物理不一定连续

 

顺序表可细分为两类：

①定长顺序表（在栈内操作）

②不定长顺序表（可扩容，在堆内操作）

↑因此顺序表一般都通过创建数组来建立。

 

此篇博客专门针对定长顺序表做一些操作!!

初始化：
...]]></description><category></category></item><item><title><![CDATA[【Linux】文件操作基本命令]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/82843051</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/82843051</guid><author>VVVv_0427</author><pubDate>Thu, 27 Sep 2018 16:06:38 +0800</pubDate><description><![CDATA[【Linux】文件操作基本命令

分为普通文件和目录文件两类来进行讨论

①创建

普通文件：touch filename(带上扩展名)

例如：touch main.c

目录文件：mkdir dirname(无扩展名)

例如：mkdir test





②删除

普通文件：rm dirname

目录文件：rmdir dirname 删除空文件

                  rm...]]></description><category></category></item><item><title><![CDATA[【Linux】目录下的操作(ls cd pwd)]]></title><link>https://blog.youkuaiyun.com/VVVv_0427/article/details/82746520</link><guid>https://blog.youkuaiyun.com/VVVv_0427/article/details/82746520</guid><author>VVVv_0427</author><pubDate>Mon, 17 Sep 2018 18:27:07 +0800</pubDate><description><![CDATA[【Linux】关于Linux目录下的操作(ls cd pwd)

Linux和Windows均是操作系统，不同之处在于Linux是基于命令行的OS，Windows是基于图形化界面的OS

Linux文件存储层次结构：树状结构



/home：普通用户的家目录，每个用户都会在/home下有一个同名目录 

/bin：命令对应的可执行文件

/etc：配置目录 配置文件

/mnt：临时挂载点

/...]]></description><category></category></item></channel></rss>