自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 万字长文带你初步理解计算机网络

首先,说到网络你的第一印象是什么?站在普通人角度肯定就是我可以通过网络做各种事情,刷抖音看B站打王者还有今天在这里你看到的CSDN的文章。但是今天我们要理解的网络,是要站在一个!

2023-03-19 19:10:48 609 3

原创 C++笔记 模板的进阶知识

一个程序(项目) 由若干个源文件共同实现,通过编译形成目标文件,最后将目标文件链接形成单一的可执行文件,执行的过程就叫做分离编译。1.模板复用了代码,增加了开发效率,C++的模板库(STL)也因此而诞生2.增强了代码的灵活性1.模板会导致代码膨胀的问题,编译时间变长2.模板编译错误时,错误信息非常凌乱,不易定位错误t=N176。

2023-02-19 17:35:38 480 1

原创 Linux笔记 Linux中的进程

因为OS会为每个进程都创建一个各自独立的task_struct和进程地址空间mm_struct,在子进程不进行对变量写时,父子进程看到的g_val的值和地址都相同,两个虚拟地址映射的物理内存也一样,但一旦父子进程对其修改,就会发生写时拷贝,尽管地址还相同,但实际经过页表的重新映射,父子进程实际存放g_val的物理内存已经不同了。程序内部的地址,依旧用的是编译器编好的虚拟地址。前面说的"程序的地址空间"是不准确的,当我们写的程序被运行在操作系统后会变成一个个的进程,所以准确的说应该是。

2022-09-28 20:20:00 1251 8

原创 C++笔记 - - list的模拟实现和使用

首先看一下文档当中是怎么说的1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。

2022-09-25 14:17:49 477 1

原创 C++笔记 - - STL vector容器的使用和模拟实现

【代码】C++笔记 - - STL vector容器的使用和模拟实现。无参的构造函数 :vector();构造并初始化n个value : vector(size_type n,const value_type& val =value_type()); //value_type实际就是模板的参数T拷贝构造函数 : vector(const vector& x);迭代器区间进行构造:vector(Inputlterator first,Inputlteratorl last);

2022-09-18 07:08:45 315 5

原创 Linux笔记 - - yum/git/gdb的使用

yum在Linux当中就像是我们手机当中的应用市场,可以进行软件的yum源就是一个配置文件,内置了下载链接。这些链接指向了一些软件发布平台,我们就是在通过软件发布平台去安装软件的。

2022-09-16 20:21:42 1204

原创 Linux笔记 - - gcc/g++和make/Makefile的使用

make是一条命令,Makefile是一个文件,二者搭配使用,完成项目的自动化构建依赖关系和依赖方法使用vim打开Makefile文件,写入代码myfile是目标文件,依赖与file.o文件,它们构成依赖关系file.o文件依赖于file.sfile.s文件依赖与file.ifile.i文件依赖与file.cpp原理make是如何工作的,在默认的方式下,也就是我们只输入make命令。那么,1. make会在当前目录下找名字叫或的文件。2.如果找到,它会找文件中的第一个目标文件(

2022-09-16 13:13:10 947

原创 Linux笔记 - - vim的使用

1.认识vimvim是一款在Linux平台下的,只负责编写代码。打开Linux,在命令行输入 vim test.c 进入vim。注意:如果没有test.c文件vim会帮你新建一个test.c的文件进入到vim之后可以发现,是不能立即写上代码的,这是为什么呢???引出概念 -> vim的模式,在进入vim时,其实是进入到了vim的某种模式当中在进入vim之后,其实就是进入了正常模式,在正常模式下,你想立即写代码是不行滴在命令模式中按 i 进入插入模式。

2022-09-15 19:55:43 970

原创 Linux 关于权限的介绍

在Linux操作系统当中,为什么要有超级用户(root)用户和普通用户的分类呢?

2022-09-14 16:28:58 221

原创 Linux常用命令

Linux下环境:centos 7.6。

2022-09-12 18:05:46 351 2

原创 C++ string类模拟实现

1.创建string类2.默认成员函数的模拟实现2.1 Constructor(构造函数)函数实现:2.2 Destructor(析构函数)函数实现:2.3 拷贝构造函数函数实现:2.4 Operator=(赋值运算符的重载)函数实现:测试代码:3.Capacity(容量)函数实现:测试代码:4.Element access(元素访问)测试代码:5.Iterators(迭代器)函数实现:测试代码:6.Madifiers(修

2022-09-09 22:19:21 754 3

原创 C++ string类

1.为什么要学习使用string类1.1 C语言中的字符串1.2 相比与C库函数方便、快捷、简单2.标准库中的string类2.1 string类的了解2.2 string的常用接口说明string类对象的常见构造

2022-09-07 18:38:45 482 6

原创 C++模板的原理和使用

1.泛型编程2.函数模板2.1函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 函数模板的匹配规则3.类模板3.1 格式3.2 类模板的实例化

2022-09-04 20:00:09 1190 1

原创 C/C++内存管理(C/C++内存分布、malloc/calloc/realloc、new/delete实现原理)

1.C/C++内存分布2.C语言中内存管理的方式:malloc/calloc/realloc/free3.C++内存管理方式3.1 new和delete操作内置类型3.2 new和delete操作自定义类型4.operator new和operator delete函数5.new和delete的实现原理5.1 内置类型5.2 自定义类型

2022-09-03 18:50:43 310

原创 C++类和对象(初始化列表、explicit关键字、static成员、友元、内部类)

1.再谈构造函数1.2初始化列表2.static成员2.1概念3.友元3.1 友元函数3.2 友元类4. 内部类

2022-09-03 14:39:37 405 2

原创 C++类和对象(类的默认成员函数)

1.类的六个默认成员函数2.构造函数2.1 概念2.2 构造函数的特性3.析构函数3.1 概念3.2 特性4.拷贝构造函数4.1 概念4.2 特征5.赋值运算符重载5.1运算符重载5.2 赋值运算符重载7.取地址重载和const成员取地址重载

2022-09-03 12:48:18 405 2

原创 C++类与对象(一)

1. 面向过程和面向对象初步认识2.类的引入3.类的定义3.1类的两种定义方法4.类的访问限定符和封装4.1 访问限定符4.2 封装5类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小7.2 类对象的存储方式猜测7.3 结构体内存对齐规则8.this指针8.1 this 指针的引入8.2 this指针特性几个小问题1.C++中struct和class的区别是什么?2.结构体如何对齐?..........

2022-08-31 08:33:31 178

原创 初步了解C++

定义命名空间,需要使用namespace,后面跟空间名,最后加上一对{},括号里面的就是命名空间里的成员三个特点1.正常定义命名空间定义的命名空间可以定义函数/变量/类型。{//在命名空间中可以定义变量/类型/函数{}inta=0;{intval;}}2.命名空间可以嵌套定义{//在命名空间中可以定义变量/类型/函数{}inta=0;{intval;}//命名空间可以嵌套定义{intval;}}{重点。......

2022-07-19 01:33:14 271

原创 数据结构--------树\二叉树\完全二叉树\堆

在数据结构中,有线性的数据结构。比如耳熟能详的数组、链表等都是线性的数据结构。那有没有不是线性的呢?当然有,本文要介绍的就是数据结构中一种非线性的数据结构 ---树1. 树的概念及其结构 1.1 树的概念树是一种非线性的数据结构 ,它由n(n>=0)个有限节点组成一个有层次关系的集合。把它叫做树是因为它很想一颗倒挂的树,也就是说树的根朝上,而叶子朝下的。有一个特殊的节点,称为根节点,根节点没有前...

2022-05-29 20:23:52 278 8

原创 数据结构:“栈“住,“队列“

目录1.栈是啥1.1栈的概念和结构1.2 栈的实现2.队列2.1 队列的概念和结构2.2 队列的实现1.栈是啥栈是一种数据结构(废话)。。1.1栈的概念和结构栈是一种特殊的线性表,跟链表顺序表这类数据结构最大的区别就是-----栈只能在固定的一端进行数据的增删,增加的那端是栈顶,另一端是栈底。栈遵循后进先出LIFO(Lase In First Out)的原则。压栈 数据的插入操作叫做 压栈\入栈\进栈,入数据在栈顶 出栈 数据的删除操.

2022-05-17 18:45:11 209 5

原创 数据结构线性表——顺序表、链表

1.线性表线性表(linear list)是有n个相同特性的元素组成的有限序列,在逻辑上是线性结构,也就是连续的一条直线;但是在物理结构上,不一定是连续的。常见的线性表有:顺序表、链表、栈、队列、字符串....2.顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的数据结构,一般采用数组存储,在数组上完成增删查改。顺序表一般分为:1.静态的顺序表:使用定长数组存储元素。define N 6typedef int SeqListDataType;t.

2022-05-14 16:15:13 618 4

原创 算法的时间复杂度和空间复杂度

目录1.算法效率1.1 衡量算法的好坏1.2 算法的复杂度2.时间复杂度2.1时间复杂度的概念2.2 大O的渐进表达法3.空间复杂度4.常见的复杂度对比1.算法效率1.1 衡量算法的好坏怎样才能衡量一个算法的好坏呢?对于下面的斐波那契数列long long Fib(int N){ if(N < 3) return 1; return Fib(N-1) + Fib(N-2);}斐波那契数列递归实现的代码非常简洁..

2022-05-14 13:43:02 204

原创 C数据结构之链表简单OJ题目-1

想做好数据结构题目先画图理清一下思路,先想好,再去具体实现。不然写了错,错了改,还会出现写了一百多行最后发现找不到错误,最后含泪重开......wuu我就是这样,不写难受一天,写了更难受了。leetcode.206.反转链表https://leetcode-cn.com/problems/reverse-linked-list/这题可以用双指针解决:设置两个指针end1,end2.end1指向前一个,end2指向后一个,两个指针分别表示局部紧邻的链表结点end1初始就..

2022-05-05 17:17:27 108

原创 C语言-预处理指令

1.预定义符号__FILE__ //当前文件的文件名__LINE__ //文件当前的符号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义的符号都是语言内置的举个栗子:printf("line:%d date:%s\n",__LINE__,__DATE__);可以发现我们没有定义这些符号,但它们可以

2022-04-14 14:31:07 2083 3

原创 C语言----程序环境

目录1.程序的翻译环境 和 执行环境2.详解 编译 or 链接2.1 翻译环境2.2 编译2.3 运行环境1.程序的翻译环境 和 执行环境在ANSI C的任何一种实现中,存在两种不同的环境第一种是编译环境,在这个环境中源代码被转换成可执行的机器指令第二种是执行环境,它用于实际执行代码2.详解 编译 or 链接2.1 翻译环境画张图简单了解下程序编译过程# 组成一个程序的每一个源文件通过编译过程分别转换成...

2022-04-08 12:53:37 912 3

原创 C语言动态内存管理

1.为什么存在动态内存管理?一般开辟内存空间的时候,像开辟数组、变量时开辟的都是固定的空间 //常见的开辟内存的方式 int a = 0; //向内存申请四个字节的空间,在栈上申请 int arr[10]={0}; //向内存申请连续的十个int类型的空间,在栈上申请像上述的方式有两个特点: 1.空间开辟大小是固定的。 2.数组在声明时必须指定大小,它所需要的空间在编译时分配。这些开辟内存的方式是在编译...

2022-03-31 16:35:06 1155 3

原创 C增删查改通讯录(静态版本)

Contact.c#include"Contact.h"//初始化通讯录void InitContact(Contact* Con){ assert(Con != NULL); Con->sz = 0; memset(Con, 0, sizeof(Con));}//增加联系人void AddContact(Contact* Con){ if (Con->sz >= ContactMax) { printf("通讯录满了,无法添加联系人\n");

2022-03-31 06:53:19 419

原创 C语言结构体、枚举、联合体

#1.结构体在现实世界里,常常有一些复杂对象不好用简单的变量或数组去表示,这时候C语言的自定义类型:结构体,就可以帮我们很好的定义这些复杂对象。1.1 结构体是什么:结构体是一些值的集合,这些值被称为成员变量,成员变量可以是不同的类型。1.2结构体的声明:这个时候我们就声明了一个有两个char类型和一个int类型的结构体类型struct str1.3结构体的不完全声明:与上面的声明不同的是少了结构体标签,所以这个结构体类型只有一个变量s3,不可在函...

2022-03-26 03:01:48 341

原创 C语言字符串库函数和内存库函数

模拟库函数

2022-03-23 16:57:57 346

原创 C语言初识指针妹上 (我现在一天不打代码就浑身发痒,仿佛身上有蚂蚁再爬,我这是怎么了(滑稽))

指针是什么?刚刚接触c语言的小伙伴们可能会一头雾水。今天小黄就给大家粗略讲讲指针这方面的知识。如果文章有错漏,大家可以指出来,欢迎讨论。1.指针简单介绍 指针是什么? 指针是什么?指针理解的2个要点:1. 指针是内存中一个最小单元的编号,也就是地址2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量总结:指针就是地址,口语中的指针则通常指的是指针变量。内存:指针变量:我们可以通过&a...

2022-03-12 01:47:44 100

原创 学习编程的一点点话

坚持与努力!

2022-01-10 16:18:42 259 2

原创 C语言学习(三子棋)

test.c#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void game(){int ret=0;char board[ROW][COL]={0};//初始化棋盘Initplayboard(board,ROW,COL);//打印棋盘displayboard(board,ROW,COL);//移动...

2021-12-05 17:30:45 155

原创 C语言学习(扫雷)

game.h//声明#define _CRT_SECURE_NO_WARNINGS 1#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define set_count 10#include<stdio.h>#include<stdlib.h>#include<time.h>void Initboard(char mi...

2021-12-04 19:30:52 285

空空如也

空空如也

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

TA关注的人

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