自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

VVVv_0427的博客

C语言大作战行动

  • 博客(34)
  • 收藏
  • 关注

原创 【C++】虚继承——菱形继承问题(内存布局图解)

【C++】虚继承——菱形继承问题(内存布局图解)(这一块的内容给出七个例子来理解~有问题的话可以评论留言哟)先给出一段含有虚继承的代码:#include<iostream>using namespace std;class A{public: A(int a):ma(a){} public: int ma;};class B:virtu...

2019-02-19 19:32:06 2059

原创 隐藏和覆盖、多态、虚函数【C++】

【C++】隐藏和覆盖隐藏: overhide 派生类中隐藏了基类中所有的同名函数①同名、不同参②继承关系下的不同作用域覆盖:派生类中同名同参的虚函数覆盖基类中同名同参的虚函数①同名同参②继承关系下的不同作用域③均为虚函数 隐藏:class Base{public: Base(int a) :ma(a){} void Show() { st...

2019-01-15 21:30:18 1563 3

原创 【C++】继承①

【C++】继承①继承的写法类标识 类名 : 继承方式 基类名称继承的本质:代码复用例如:class Student : public People (Student是子类/派生类,People是父类/基类,Student以public方式继承了People类)#include<iostream>#include<string>using names...

2019-01-11 19:44:16 274

原创 【C++】类的6个默认函数(一)

【C++】类的6个默认函数(一)(本blog主要讲前三个类的默认函数,即:构造函数、析构函数、拷贝构造函数)类的6个默认函数为:1、构造函数2、析构函数3、拷贝构造函数4、赋值运算符的重载函数5、取地址操作符的重载函数6、const修饰的取地址操作符的重载函数特点:共有的、内联的对象的生成:1、开辟内存2、对对象的内存空间进行初始化(调用构造函数)...

2018-12-05 20:08:08 235

原创 【C++】类和对象

【C++】类和对象类和对象oop:是对现实中一组具有相同特征的实体模型。属性:独享行为:共享举一个学生类的例子:#include<iostream>class Student{public: void eat() { std::cout<<mname<<"is eating"<<std::endl; } ...

2018-12-05 19:15:35 167

原创 namespace名字空间作用域、using

namespace名字空间作用域、usingnamespace名字空间作用域namespace名字空间作用域用于解决名字相同冲突的问题。using namespace std;//C++标准std以下代码就明显的表示了namespace中的变量和全局变量之间的调用区别。namespace FYW{ int a=10; int Sum(int a,int b) { ...

2018-11-28 20:57:23 702

原创 new和delete

new和deleteC语言中使用的是malloc动态开辟内存,用free销毁内存。//C语言malloc、freeint main(){ //① int *p1=(int *)malloc(sizeof(int)); free(p1); //② int *p2 = (int *)malloc(sizeof(2)); free(p2);}以上代码可以发现,①是mall...

2018-11-28 11:40:09 159

原创 【Linux】管道文件(有名管道、无名管道)

【Linux】管道文件(有名管道、无名管道)多进程编程的目的就是为了同时完成多个任务。例如:一个产品,一个软件,需要n个进程同时执行才能完成,而这些进程之间一定是有所联系的。因此:多进程工作时,进程间需要通讯(传递数据)。fork()创建的子进程,与父进程之间唯一共享的是文件描述符。 进程之间的通讯方式有:管道 信号量 消息队列 共享内存 Socket (用于网...

2018-11-24 21:55:18 4201

原创 【C++】调用约定+返回值的返回方式

【C++】调用约定+返回值的返回方式调用约定①_cdecl C标准调用约定调用方开辟内存,调用方清理②_stdcall Windows标准调用约定调用方开辟内存,被调用方清理③_fastcall 快速调用约定最多使用2个寄存器代入实参,其他参数和_stdcall的处理方式相同即:调用方开辟内存,被调用方清理④_thiscall 成员方法的调用约定 调用约...

2018-11-14 20:13:38 258

原创 【C++】函数堆栈调用(含一些简单汇编指令)

【C++】函数堆栈调用(含一些简单汇编指令)关于汇编的一些知识点+指令Windows:Inter x86Linux:AT&T指令:①mov 移动数据例如:mov , dword ptr[ebp-4] , 0ah;(ebp:栈底指针寄存器)②lea 移动地址例如:lea , eax , [ebp-4];③push 压栈例如:push 0ah;④...

2018-11-14 20:05:54 395

原创 【C++】编译、链接、运行原理+强弱符号

【C++】编译、链接、运行原理+强弱符号虚拟地址空间作用:进程地址空间需要隔离,防止恶意的程序修改其他程序的内存数据,所以计算机需要虚拟地址空间其中:.data:已经初始化,并且初始化不为0的数据。.bss:未初始化,或者初始化为0的数据。例如:#include<stdio.h>extern int gdata;extern int Sum(int...

2018-11-14 19:16:58 453

原创 【数据结构】【排序】选择排序(直接选择排序、堆排序)

【数据结构】【排序】选择排序①简单选择排序每次从序列中找出最大/最小元素,插入已排列部分的最后。过程:1、设一个变量min,先放在第一个元素的位置,设i,j,i=0,j=i+1。2、在未排序数组中找到最小的赋给min,与i比较,开始交换3、i++  j++代码展示://简单选择排序#include<stdio.h>void SimpleSele...

2018-10-31 21:47:49 251

原创 【数据结构】【排序】插入排序(直接插入排序、希尔排序)

【数据结构】【排序】插入排序插入排序可分为直接插入排序及希尔排序①直接插入排序步骤如下:1、将数组分为2部分:已排序部分、待排序部分2、每次从待排序部分中拿出元素,在已排序部分中找到合适的位置插入元素思想:将一个记录插入到已排序好的有序表中,从而得到一个新记录数增1的有序表。即:先将序列的第一个记录看成是一个有序的子序列,然后从第二个记录逐个进行插入,直至整个序列有序为止。...

2018-10-30 17:43:56 306

原创 【Linux】用户管理

【Linux】用户管理Linux允许多用户同时登陆工作的系统。root 超级管理员,拥有最高权限,是第一启动设置的用户管理员分配:root用户能够管理其他用户关于用户的信息存储位置①/etc/passwd 存储密码②/etc/group 组③/etc/shadow 加密加密算法ID:MD5 以及秘钥参考其他blog含义如下:https:/...

2018-10-24 20:14:00 199

原创 【Linux】进程管理命令

【Linux】进程管理命令进程管理命令进程:运行中的程序(是一个动态的过程概念)执行时,将程序加载到内存上程序:存储在磁盘上的可执行的二进制文件时间片轮转法:CPU的执行时间划分为很小的时间片,每个进程在CPU上运行,一次只分配一个时间片。 Linux系统上,/proc虚拟目录,以内存为单位存储内存映射。操作系统为了唯一标识一个进程,会给进程分配一个ID——PI...

2018-10-24 19:55:07 260

原创 【Linux】文本编译器命令模式下的操作(光标的移动、搜索字符串操作)+文件的查看压缩操作

【Linux】文本编译器命令模式下的操作(光标的移动操作)+文件的查看压缩操作输入vim/vi进入文本编译器中,在命令模式下,光标的移动命令操作:shift+4 :将光标移到本行最后一个位置shift+6 :将光标移到本行第一个位置gg:将光标移到第一行G / shift+g:将光标移到最后一行行号n+shift+g(G):将光标移到第n行如果出现文本过长的情况,一...

2018-10-23 22:29:59 631

原创 【数据结构】带头结点的单链表

【数据结构】带头结点的单链表链表:逻辑连续,物理上不一定连续带头结点的单链表:结构体://定义结构体typedef int ELEM_TYPE;typedef struct Node{ ELEM_TYPE mdata; struct Node* pnext;}Node,*Link;尾插://给尾部插入bool InsertTail(Link ph...

2018-10-16 11:39:38 727

原创 【数据结构】定长顺序表

【数据结构】顺序表关于基础数据结构,分为两类:①线性:数组、链表、顺序表②非线性:树、图 顺序表和链表的区别:顺序表:逻辑连续、物理连续链表:逻辑连续、物理不一定连续 顺序表可细分为两类:①定长顺序表(在栈内操作)②不定长顺序表(可扩容,在堆内操作)↑因此顺序表一般都通过创建数组来建立。 此篇博客专门针对定长顺序表做一些操作!!初始化:...

2018-09-29 18:19:44 226

原创 【Linux】文件操作基本命令

【Linux】文件操作基本命令分为普通文件和目录文件两类来进行讨论①创建普通文件:touch filename(带上扩展名)例如:touch main.c目录文件:mkdir dirname(无扩展名)例如:mkdir test②删除普通文件:rm dirname目录文件:rmdir dirname 删除空文件                  rm...

2018-09-27 16:06:38 304

原创 【Linux】目录下的操作(ls cd pwd)

【Linux】关于Linux目录下的操作(ls cd pwd)Linux和Windows均是操作系统,不同之处在于Linux是基于命令行的OS,Windows是基于图形化界面的OSLinux文件存储层次结构:树状结构/home:普通用户的家目录,每个用户都会在/home下有一个同名目录 /bin:命令对应的可执行文件/etc:配置目录 配置文件/mnt:临时挂载点/...

2018-09-17 18:27:07 938

原创 变量类型转换

变量类型转换先来一道例题:#include<stdio.h>int main(){ char a=-1; char b=255; unsigned char c=-1; unsigned char d=255; int e=a; int f=b; int h=c; int i=d; unsigned int j=a; unsigned int k=b; uns...

2018-05-18 11:45:32 177

原创 字符串的浅拷贝

字符串的浅拷贝先来一道例题ヾ(✿゚▽゚)ノ#include<stdio.h>int main(){ char buf[3]; char *arr[3];//指针数组 int i; for(i=0;i<3;i++) { scanf("%s",buf); arr[i]=buf;//代表数组元素首地址 } for(i=0;i<3;i++) { ...

2018-05-18 11:34:02 586

原创 【编译】过程+作用域

编译的过程环境可以分为:编译环境(用于PC...)&&运行环境编译分为以下四个过程:①预处理(预编译)②编译③汇编④链接可参考图示:具体剖析四个步骤:①预处理(预编译):文本处理山区注视、解决预处理命令 例如:#define  #include #if #end ...均为预处理命令②编译:查错发现错误,包括语法、语义、词法、词义分析...③汇编:翻译④链接:找符号每个文件均有符号...

2018-05-18 10:53:26 211

原创 结构体【内存变量字节大小】问题

结构体【内存变量字节大小】问题知识点:结构体大小、内存对齐各数据类型所占用的字节数大小那么给出以下程序 ~大家猜一猜看结果是什么呢?#include<stdio.h>struct A{ char a;//char型 1字节 int b;//int型 4字节};int main(){ printf("%d\n",sizeof(struct A)); return 0;...

2018-05-05 20:05:11 502

原创 关于【浮点数精度】的问题

关于【浮点数精度】的问题关于精度误差的关系:用一道例题来阐述关于浮点数精度的问题( • ̀ω•́ )✧求解二元一次方程的值~关于求解二元一次方程,里面有三个变量,a,b,c,所以要考虑到三个值的问题a,b,c三个值类型为double型,那么在判断是否为零时就自然要想到精度的问题了。给一个错误的例子:if(a==0)//error光是a==0是没有办法判断的,因为a假如是0.000几,就没法包含这种...

2018-05-05 19:10:42 166

原创 关于【新数据类型】typedef的知识点

关于【新数据类型】typedef的知识点使用:typedef 数据类型目的:让整个的类型名更加简单,使用更加方便一些ヾ(✿゚▽゚)ノ可以发现在很多编程过程中,所使用的很多种数据类型使用次数多,但是名字比较长,不方便与每一次的的使用~这个时候!!typedef将成为你的好帮手(◕ᴗ◕✿)int main(){ unsigned long long int a=10; unsigned long...

2018-05-04 11:41:36 277

原创 关于【结构体】struct的知识点

关于【结构体】的知识点结构体 struct 又可以称之为自定义数据类型举例:定义一个结构体struct Student{ char name[20]; int age;};使用int main(){ struct Studnet stu1;}对此结构体进行一些使用测试如下:sturct A{ struct Student a;//ok sturct A b;//error s...

2018-05-04 11:20:54 330

原创 关于【动态内存】知识点(free崩溃问题)

关于【动态内存】知识点(free崩溃问题)free释放动态内存,p不使用,则free(p)释放内存,否则会导致内存泄漏问题通过以上的存储方式结构图可以看出有头信息、尾信息,而且每一段中间会有空白的一段区域,所以free不需要长度信息。free崩溃的原因:①越界(sizeof漏写、realloc第二个值写错等原因)②修改了指针的指向③重复释放同一段内存④释放了非动态内存①free崩溃情形一(越界)/...

2018-04-22 19:56:18 810

原创 关于【动态内存】知识点及例题(malloc、calloc、realloc)

关于【动态内存】知识点及例题(malloc、calloc、realloc)先来一道例题引出问题~Question:用筛选法求素数每一次筛选都筛选掉第一个数的倍数,同时对数据做标记,没有被筛选的标记1,删除的数据标记0,最终只用输出余下的标记为1的数据即可,代表为素数。(可参考以上图片)代码如下://知识点:动态内存//例题:用筛选法求素数#include<stdio.h>#inc...

2018-04-22 19:23:04 350

原创 字符串数组中【求单词个数】解法

字符串数组中【求单词个数】解法知识点:①断言头文件: #include<assert.h>断言一般表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。在以下题目中使用为:assert(str!=NULL);//断言 if(str...

2018-04-14 19:39:48 1166

原创 关于数组中【字符串常量】及【字符数组】的问题

关于数组中【字符串常量】及【字符数组】的问题首先给出以下程序:(大家认为能不能成功运行呢?)#include<stdio.h>int main(){ char *str1="abcde";//str1是一个指针,字符串常量 char str2[]="abcde";//str2为一个字符数组 str1[0]='x';//error,想要修改str1中的第一个元素的值为x st...

2018-04-14 19:17:08 460

原创 关于【指针加减法】问题

指针加(减)数字,需要调整,调整的权重(格子大小)为sizeof(指针去掉一个*)指针加法指针+数字:加一个单元格各类型对应字节数:练习:#include<stdio.h>int main(){ int *p=(int *)2000; printf("%d\n",(short*)p+4); printf("%d\n",(double*)p+4); printf("%d\n"...

2018-04-08 11:17:19 252

原创 关于子函数修改父函数值的问题(使用指针)

知识点:子函数想要改变父函数的值要满足以下两点:①传指针 ②解引用(返回内存地址中保存的值)交换两个数的值,举例:①情形一(交换失败)#include<stdio.h>int Swap(int *p1,int *p2){ int *tmp=p1; p1=p2;//没有解引用 p2=tmp; return 0;}int main(){ int a=10,b=20;...

2018-04-03 23:22:28 428

原创 关于【数据高低各位的输出与丢弃】问题求解方法

关于数据高低各位的输出与丢弃问题感觉到是初学者经常会遇到的问题,同样作为初学者!对于以下例题给出此求解方法!题目:给一个不多于五位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出个位数字,例如原数为321,应输出123。可见此题需要分别建立三个函数求解①int Count(int x);②int PrintOrder(int x);③int PrintReverse(int x...

2018-03-31 22:52:02 279

空空如也

空空如也

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

TA关注的人

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