自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 问答 (1)
  • 收藏
  • 关注

原创 Linux网络:网络传输基本流程与协议初识

2019-02-21 12:51:27 417

原创 Linux——线程(总结)

2019-02-15 14:32:45 237

原创 标识符的链接属性

链接属性函数在使⽤的时候可能在不同的源⽂件中,每个源⽂件单独编译完成之后⽣成对应的⽬标⽂件,所有的⽬标⽂件以及那些从⼀个或者多个函数库中引⽤的函数,链接在⼀起形成了可执⾏程序。那相同的⼏个标识符出现在⼏个不同的源⽂件中,如何对待他们?标识符的链接属性决定了如何处理。链接属性分为:外部链接属性 内部链接属性 ⽆链接属性  外部链接属性:全局标识符具有外部链接属性。⼀个标识符...

2019-02-13 21:08:35 457

原创 操作符和表达式的问题总结

操作符:算术操作符 + - * / %%操作符的两个操作数必须为整数移位操作符<< 左移操作符>> 右移操作符:逻辑移位(左边⽤0填充)、算术移位(左边⽤原该值的符号位填充)注意:对于移位运算符,不要移动负数位,这个是标准未定义的位操作符& 按位与 | 按位或 ^ 按位异或注:他们的操作数必须是整数赋值操作符 = :复合赋值符 +=...

2019-02-13 15:38:37 241

原创 Linux——进程间关系和守护进程(总结)

2019-02-13 14:57:44 166

原创 面向对象三大特性之一:多态(C++)

目录多态的定义及实现抽象类多态的原理单继承和多继承关系的虚函数表多态的定义及实现1、什么是多态?当不同的对象去完成某个行为时,会产生出不同的结果。多态是:不同继承关系的类对象去调用同一函数时,产生了不同的行为。例如:Student类继承了Person类。 Person对象买票全价,Student对象买票半价。这就是多态行为。2、构成多态的两个必要条件调用函数...

2019-02-12 19:58:19 561

原创 Linux——进程信号(总结)

2019-02-05 10:27:43 478 1

原创 菱形继承与菱形虚拟继承

菱形继承单继承:一个子类只有一个直接父类时称这个继承关系为单继承  多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承菱形继承:菱形继承是多继承的一种特殊情况。  来看看下面这段菱形继承的代码有什么问题呢?#include <iostream>class A{public: int a;};class A1 : public A{...

2019-01-30 16:00:34 261

原创 实现一个不能被继承的类

在c++98中,我们将构造函数私有化,这个类将无法被继承 在c++11中提供了final ,final关键字修饰的类为最终类,表明该类不能被继承//C++98:将构造函数私有化,此类可不被继承class A{public: static A GetInstance() { return A(); }private: A() {}...

2019-01-30 13:43:16 190

原创 面向对象三大特性之一:继承(C++)

目录继承的定义基类对象和派生类对象的赋值转换继承中的作用域派生类与基类中成员的关系派生类与默认成员函数的关系继承与友元的关系继承与静态成员的关系面向对象的三大特性:封装,继承,多态。继承作为三大特性之一,是使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。继承呈现了面向对象程序设计的层次结构,继承是类设计层次的复用。继承的...

2019-01-29 18:51:33 593

原创 C++ 中的 IO流

目录回顾:C语言中的输入输出C++中的IO流一、流是什么?二、C语言中的IO流三、C++中的IO流四、C++中的文件流 回顾:C语言中的输入输出 理解C++中的IO流之前,先来回顾一下C语言中的输入输出。在C语言中,我们常用的输入输出函数有以下几种:scanf printf       pusts gets        putc getc       g...

2019-01-26 23:02:28 339

原创 Linux——进程间通信(总结)

2019-01-25 22:07:05 175

原创 C++特化的应用——类型萃取

提出问题:如何实现一个对于拷贝内置类型和自定义类型通用的拷贝函数? 1、拷贝内置类型对于内置类型我们可以用memcpy进行拷贝,因为memcpy属于浅拷贝,内置类型不涉及资源管理的问题。2、拷贝自定义类型拷贝自定义类型时有可能会涉及到深拷贝(如string)涉及到了资源管理,就不能使用memcpy。所以给出了一种方法:赋值void Copy(T* dst, const...

2019-01-24 14:18:49 226

原创 C++ 模板特化

模板的特化 在使用模板时,可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果。这时就一些需要特殊处理(对模板进行特化)。在原模板类的基础上,针对特殊类型所进行特殊化的实现方式。模板特化又分为:函数模板特化、类模板特化。  函数模板特化 template<class T> bool IsEqual(T& left, T&am...

2019-01-21 14:33:30 191

原创 C++ 初识模板

目录泛型编程函数模板类模板非类型模板参数  泛型编程 若我们要写一个swap交换函数,当交换的两个变量为int型,swap函数的参数类型为int;当交换的两个变量为double型,那么就要重载一个swap函数,参数变为double型。若出现新类型时,就需要增加对应的函数。这样就使得代码的可维护性变低,一出错可能所有的重载均出错。要解决上面这个问题我们就要用到一种手...

2019-01-21 12:05:35 140

原创 C++中引用的一些问题

C++中有没有引用数组这个概念?  试分析下面这段代码会不会出现错误。struct St{ int& x; int& y; int& z;};int a = 1;int main(){ int b = 2; int* pc = new int(3); St st = {a, b, *pc}...

2019-01-20 15:38:40 245

原创 C++内存管理

目录 C/C++在内存中的分布    C++内存管理1.new/delete操作内置类型2. new和delete操作自定义类3.operator new与operator delete函数 4. new和delete的实现原理malloc/free和new/delete的区别和联系?      C/C++在内存中的分布     先来看看C/C++中程序...

2019-01-20 12:58:24 107

原创 Linux——基础IO(总结)

2019-01-20 11:39:44 287

原创 Linux——进程控制(总结)

2019-01-19 16:32:07 610

原创 单例模式——懒汉模式(C++)

//懒汉模式//优点: 第一次使用实例对象时,创建对象//缺点: 复杂#include <iostream>#include <mutex>#include <thread>using namespace std;class Singleton{public: static Singleton* GetInstance() //获取实...

2018-11-13 14:01:15 706

原创 C语言写一个计算器的三种方法

 方法一:常规方法 #include<stdio.h>int Add(int a, int b){ return a + b;}int Sub(int a, int b){ return a - b;}int Mul(int a, int b){ return a * b;}int Div(int a, int b){ return a ...

2018-05-23 17:50:23 88436 5

原创 宏和函数的区别

先来看看下面这段代码:#include<stdio.h> #define MAX(a, b) ((a)>(b)?(a):(b))int Max(int a, int b){ return a > b ? a : b;}int main (){ int x = 2; int y = 3; int max = MAX(x, y); printf...

2018-05-21 17:03:27 180

原创 #define

#define : 1. 定义标识符2.定义宏#define定义标识符语法:  #define name stuff例:#define MAX 1000printf("%d", MAX);#define reg register                      //为register这个关键字创造一个简短的名字reg int a = 10;...

2018-05-19 23:43:04 182

原创 实现memmove

           memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。  #include<stdio.h>#include<assert.h>voi...

2018-05-19 19:11:09 267

原创 实现memcpy

 memcpy:c和c++使用的内存拷贝函数。 功能从源src所指的内存地址的起始位置开始拷贝count个字节到目标dest所指的内存地址的起始位置中。  #include<stdio.h>#include<assert.h>void* my_memcpy(void* dest, const void* src, size_t cou...

2018-05-19 19:08:26 459

原创 实现strcmp

 strcmp :  比较两个字符串 规则:当str1<str2时,返回为负数 ; 当str1==str2时,返回值= 0 ; 当str1>str2时,返回正数。即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。  #include<stdio.h>#include<as...

2018-05-19 18:51:48 800 1

原创 实现strchr

功能:查找字符串str中首次出现字符c的位置。说明:      返回首次出现c的位置的指针,返回的地址是被查找字符串指针开始的第一个与c相同字符的指针,如果Str中不存在c则返回NULL。 #include<stdio.h>#include<assert.h>char* my_strchr(const char* str, int c)...

2018-05-19 18:46:03 167

原创 实现strstr

 从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。       图解思路判断s1,s2是否相等,若相等,则s1,s2同时向后移一位;若不相等,cur后移一位,s1=cur。循环判断。 代码实现#include<stdio.h>#include<assert.h...

2018-05-19 18:38:38 334

原创 实现strcat

 功能: 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。 说明:   src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。  返回指向dest的指针。#include<stdio.h>#include<assert.h>char* my_strcat(char* ...

2018-05-19 18:17:51 140

原创 实现strcpy

 strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。  #include<stdio.h>#include<assert.h>char* my_strcpy(char*dest, const char* src){ char* ret = dest; assert(des...

2018-05-19 18:07:16 178

原创 程序环境——翻译环境与执行环境

本篇重点:程序的翻译环境和执行环境 详解翻译环境中的 编译+链接程序的翻译环境和执行环境在ANSI的任何一种实现中,存在两个不同的环境。翻译环境,在这个环境中源代码被转换为可执行的机器指令。 执行环境,它用于实际执行代码。 1、翻译环境 ^ 组成一个程序的每个源文件通过编译过程分别转换成目标文件(object code)^ 每个目标文件由链接器(li...

2018-05-15 18:08:05 564

原创 有关数组的运算 (sizeof)(strlen)

一维数组int a[ ] = { 1,2,3,4 };printf("%d\n", sizeof(a));                //16    //数组名单独放在sizeof内部,数组名表示整个数组。 sizeof(数组名)计算的是整个数组的大小,单位是字节。printf("%d\n", sizeof(a + 0));          //4     不是单独放在...

2018-05-06 21:43:03 313

原创 二维数组中的一些问题

一:二维数组怎么才能正确的初始化arr[3][4] = {1, 2, 3};arr[3][4] = {{1, 2}, 3};arr[3][4] = {{1}, {2}, {3}};这些显然是正常的初始化一个二维数组。下面这些,看看对不对:arr[][4] = {{1}, {2}, {3}};arr[3][] = {{1}, {2}, {3}};第一个对,第二个错。为...

2018-04-25 00:31:39 578

原创 C语言小游戏——三子棋

 C语言 -- 三子棋       本篇主要是用二维数组和多个函数来实现三子棋游戏。       让我们先来看看这个编写这个游戏的思路:首先要打印三子棋的棋盘,然后是玩家下棋,电脑下棋,最后判断谁赢了,或者看看是否平局。       我们用一个头文件 game.h ,一个源文件 game.c(主要的代码都在这里面哦!)和一个源文件测试文件 text.c(主要写整个游戏的具体思路)来...

2018-04-23 22:23:05 662

原创 一维数组中的一些问题

一:一维数组怎么才能正常创建下面创建一个数组:int arr1[10];想想下面这样写对吗?int count = 10;int arr2[count];这是错的!   注:数组创建,[ ]中要给一个常量才可以,不能使用变量。在C++中,在int前加一个const,conut就变成了一个常量,所以下面这个在C++中能正常运行。const int count = ...

2018-04-18 13:40:01 549

原创 C语言操作符

 操作符分类算术操作符   移位操作符   位操作符   赋值操作符   单目操作符   关系操作符   逻辑操作符   条件操作符   逗号表达式   下标引用、函数调用和结构成员 1.算术操作符      +     -     *    /    %1. 除了了%操作符之外,其他的几个操作符可以作用于整数和浮点数。2. 对于/操作符如果两个操作数都为整...

2018-04-10 14:01:13 134

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除