自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

基础研究

专注C/CPP;常用的一定要孰而生巧

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

转载 C++基础-STL简介

C++基础-STL简介STL简介1.STL六大组件1.容器(Containers)2.算法(Algorithms)3.迭代器(Iterators)4.仿函数(Functors)5.配接器(适配器)(Adapters)6.分配器(Allocators)顺序容器(vector、queue、list)1.vector2.deque(double-ended queue)3.list4.map容器适配器(stack、queue、priority_queue)STL简介STL(Standard TemplateL

2021-04-03 16:51:35 155

转载 在线写代码工具

ideone1.https://ideone.com/1.https://ideone.com/https://ideone.com/

2021-04-01 07:22:07 403

原创 经典的数组与指针--001

经典的数组与指针1.数组与指针1.数组与指针先看代码#include <stdio.h>int main(){ int a[5] = {2,1,3,4,7}; int *ptr = (int *)(&a + 1); printf("*(a+1):%d *(ptr+1):%d\n", *(a+1), *(ptr-1)); printf("a=%p,&a=%p \n",a,&a); printf("a=%p %p %p %

2021-03-31 23:15:52 127

原创 Markdown_new

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-03-31 23:12:52 139

转载 动态内存

智能指针智能指针智能指针实例分析智能指针智能指针的使用智能指针实例分析#include <iostream>#include <memory>using namespace std;int main(){ int a = 100; shared_ptr<int> p_ma = make_shared<int>(a); shared_ptr<int> p_mb(p_ma); cout <&lt

2021-03-23 23:16:20 129

转载 for while do_while

for1.for循环2.流程图3.instance analysis1.for循环C for 循环for 循环允许您编写一个执行指定次数的循环控制结构。for ( init; condition; increment ){ statement(s);}下面是 for 循环的控制流:init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。接下来,会判断 condition。如果为真,则执行循环主体。如果为

2021-02-28 19:46:07 149

原创 C++ Parent和Child继承分析

继续分析1.继承实例分析2.class Parent1.继承实例分析#include <iostream>#include <stdio.h>#include <unistd.h>using namespace std;class Parent{ public: char data[20]; void Function1(); virtual void Function2(); // 这里声明Function2是虚函数

2021-02-26 08:42:55 1551

转载 ftok生成唯一ID

ftok1.linux ftok()函数1.linux ftok()函数系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,否则 -1 被返回。在一般的UNIX实现中,是将文件的索

2021-02-18 14:43:13 358

原创 函数指针

函数指针 1.函数指针1.函数指针/*********************************函数指针********************************/#include <stdio.h>static int first_drv_open(){ printf("first_drv_open\n"); return 0;}static int first_drv_read(){ printf("first_drv_read\

2021-01-06 16:03:11 110

原创 define是不是关键字?

define是不是关键字?1.define2.instance analysis1.definedefine是编译器的预编译指令,是编译器实现的,不是C语言的内容。2.instance analysis#include <stdio.h>#define SAGA_PRO 1#define Z4B_L 2#define Debug 0#define UAV_TYPE Z4B_Lenum { SIZE_1 =1, SIZE_2 =2, SIZ

2020-12-16 14:59:44 2839

转载 C/C++字符串转化为数字的库函数

C/C++字符串转化为数字的库函数1、atoi2、atol3、atof4、strtod5、strtol6、strtoul1、atoi功 能:把一字符串转换为整数用 法:int atoi(const char *nptr);详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 /0 时停止转换,返回整型数。参 数:*nptr: 待转化的字符串。返回值:int:

2020-12-11 14:47:23 389

原创 使用CSDN-markdown编辑器

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-12-11 14:42:00 80

转载 const修饰符的使用(修饰结构体指针,引用外部的const 变量)

const修饰的结构体和变量

2020-11-12 00:00:27 560

转载 enum

enum占内存大小

2020-11-10 22:26:39 90

转载 浅谈unsigned int与int相加的问题

instance analysis:#include <stdio.h>int main(){ int a = -30; unsigned int b = 15; int w = a+b; if(a+b > 0) { printf("a+b>0\n");//输出这句话 printf("a+b:%d\n", a+b); } else { printf("a+b&lt

2020-11-08 22:15:10 895

原创 sizeof对象内存分析

sizeof对象内存分析instance analysis内存分析图instance analysis#include <stdio.h>int b[100];void func(int b[100]){ printf("sizeof(b):%d\n",sizeof(b));}int main(){ int *pp = NULL; printf("sizeof(pp):%d\n", sizeof(pp)); printf("sizeof(*p

2020-11-08 20:51:06 84

转载 内存区划分

站在汇编语言的角度,一个程序分为:数据段 – DS堆栈段 – SS代码段 – CS扩展段 – ES站在高级语言的角度,根据APUE,一个程序分为如下段:textdata (initialized)bssstackheap1.一般情况下,一个可执行二进制程序(更确切的说,在Linux操作系统下为一个进程单元,在UC/OSII中被称为任务)在存储(没有调入到内存运行)时拥有3个部分,分别是代码段(text)、数据段(data)和BSS段。这3个部分一起组成了该可执行程序的文件。★★可执.

2020-10-31 00:18:34 940

原创 char和unsigned char取值范围分析

实例分析instance analysis:#include <stdio.h>typedef struct CHAR_Node_{ unsigned char ch_a; char ch_b;}CHAR_Node;int main(){ CHAR_Node Test; int i = 0; printf("a: \n"); for(i = 0 ; i <= 255; i++) {

2020-10-30 17:19:59 4356 2

原创 动态规划法

动态规划法与分治法的区别共同点:将待求解的问题分解成若干子问题,先求解子问题,然后再从这些子问题的解得到原问题的解。不同点:1、适合于用动态规划法求解的问题,分解得到的各子问题往往不是相互独立的;而分治法中子问题相互独立。2、动态规划法用表保存已求解过的子问题的解,再次碰到同样的子问题时不必重新求解,而只需查询答案,故可获得多项式级时间复杂度,效率较高;而分治法中对于每次出现的子问题均求解,导致同样的子问题被反复求解,故产生指数增长的时间复杂度,效率较低。动态规划法与贪心法的区别共同点:

2020-10-28 13:25:46 516

原创 友元friend

instance analysis1:#include<iostream>#include<cmath>using namespace std;class Point;class ManagerPoint{ public: double Distance(Point &a, Point &b);};class Point{ public: Point(double xx, double yy) { x = xx; y

2020-10-27 21:32:28 122

原创 Operator+

instance analysis:#include <iostream>using namespace std;struct Comp{ float real; float image;};Comp operator+(Comp one, Comp another){ one.real += another.real; one.image += another.image; return one;}int main(){

2020-10-27 21:28:11 97

原创 类-Persion

main.cpp#include <stdio.h>#include "person.h"int main(int argc, char **argv){ Person per; //per.name = "zhangsan"; per.setName("zhangsan"); per.setAge(200); per.printInfo(); return 0;}persion.cpp#include <stdio.h>#include

2020-10-27 21:26:03 1871

原创 大小端判断

instance analysis:#include <stdio.h>int main(){ short int x; char x1,x2; x = 0x1122; x1 = ((char *)&x)[0]; //低地址 x2 = ((char *)&x)[1]; //高地址 printf("x1=%x\n",x1); printf("x2=%x\n",x2); if(x1 == 0x22)

2020-10-27 21:01:12 112

原创 enum

instance analysis:#include <stdio.h>enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN}yesterday = MON, today = TUE, tomorrow = WED;int x = 10, y = 20, z = 30;int main(){ printf("%d %d %d \n", x, y, z); //输出:10 20

2020-10-27 20:54:40 89

原创 unsigned&signed

instance analysis:#include <stdio.h>#define NUM 128int main(){ signed char ch1 = NUM; printf("%d \n",ch1); unsigned char ch2 = NUM; printf("%u \n", ch2); return 0;}

2020-10-27 20:51:10 100

原创 srand随机生成数

instance analysis1:#include <iostream>#include <vector>#include <time.h>#include <stdlib.h>using namespace std;int main(){ srand(time(NULL)); for(int i = 0; i < 10;i++ ) cout << rand() <<

2020-10-27 20:21:28 111

转载 为什么要实现程序指令和程序数据的分离

就以linux的ELF为例吧, 程序放在text段(你也可以叫它code段), 这是程序指令。 而数据放在data端和bss段, 这是程序数据。 那为什么要实现程序指令和程序数据的分离呢? 1. 程序装载后, 程序指令放只读区域, 程序数据放在可读写区域。 可以防止程序被篡改。 2. 程序指令和数据指令分开, 可以提高CPU对cache的命中率, 集中了精力哈。 3. 程序指令可以被多进程共享, 但程序数据在多进程中相互独立。 这也是最重要的原因!本文链接:ht

2020-10-27 10:30:38 825

转载 处理器架构、指令集和汇编语言,三者有何关系

作者:young cc链接:https://www.zhihu.com/question/23474438/answer/119887585来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。处理器架构就是处理器的硬件架构,称为微架构。是一堆硬件电路,去实现指令集所规定的操作运算。是的,指令集决定了处理器的架构,因为处理器架构就是用硬件电路实现指令集。但是具体用什么样的处理器架构,设计怎样的硬件电路,每个人设计的都可以不一样。MIPS是一种采取精简指令集(RISC)的处理器

2020-10-26 13:17:40 1983

转载 volatile关键字(C/C++中)

一、volatile介绍volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void test(){ do1(); while(flag == 0) do2();

2020-10-26 12:31:58 135

原创 helloworld

C#include <stdio.h> //程序中因为用到了 printf 库函数, 所以要包含 printf 所在的头文件int main() //程序的入口, 表示计算机从哪里开始执行此程序, 有且, 只有一个{printf("Hello World!\n"); //调用库函数, 向屏幕打印 Hello World!return 0; // main 函数的返回值} C++#include <iostream> //程序中因为用到了 cout 库函数, 所以要包含

2020-10-25 23:23:56 94

原创 基本数据类型

数据类型

2020-10-23 21:33:50 1008 2

转载 32个关键字

C语言32个关键字(基础)第一类:数 据类型关键 字A基本数据类 型(5个):B类型修饰关 键字(4个):C复杂类型关 键字(5个):D存储级别关 键字(6个):第二类:流 程控制关键 字A跳转结构(4 个):B分支结构(5 个):C循环结构(3 个):第一类:数 据类型关键 字A基本数据类 型(5个):void: 声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。char: 字符型类型数据,属于整型数据的一种。int: 整型数据,通常为编译器指定的机器字长。float: 单精度浮点型

2020-10-22 19:00:03 260

转载 基类析构函数加上Virtual

下面的内容要说明两个问题:1. 基类的析构函数为什么要加上Virtual–防止内存泄露基类虚构函数无virtual,派生类无法析构,会导致内存泄露#include <stdio.h>class Base{public: int a; Base(){ a=0; } ~Base(){ printf("base delete"); } virtual void setA()=0;}; cla

2020-10-21 22:38:19 259

转载 封装

类封装1 介绍2:instance analysis11 介绍封装,可以达到,对外提供接口,屏蔽数据,对内开放数据。比如我们用struct 封装的类,即知其接口,又可以直接访问其内部数据,这样却没有达到信息隐蔽的功效。而class 则提供了这样的功能,屏蔽内部数据,对外开放接口。struct 中所有行为和属性都是public 的(默认)。C++中的class 可以指定行为和属性的访问方式,默认为pirvate。2:instance analysis1//C public C#includ

2020-10-21 22:33:00 108

原创 运算符重载(Operator Overload)

前面用到的运算符<<,本身在C 语言中,是位操作中的左移运算符。现在又用作流插入运算符,这种一个运算符多种用处的现像叫作运算符重载。在C 语言中本身就有重载的现像,比如& 既表示取地址,又表示位操作中的与运算。*既表示解引用,又表示乘法运算符。只不过此类功能,C 语言并没有对开发者开放这类功能。C++提供了运算符重载机制。可以为自定义数据类型重载运算符。实现构造数据类型也可以像基本数据类型一样的运算特性。比如,我们可以轻松的实现基本数据类型3 + 5 的运算,确实不能实现两

2020-10-21 22:25:19 187

原创 交换a和b的几种方法分析

交换a和b的方法1 直接函数交换不成功2 指针交换成功1 直接函数交换不成功#include <stdio.h>void swap(int a ,int b){ printf("swap a=%d b=%d\n",a,b); int t = a; a = b; b =t; printf("swap end a=%d b=%d\n",a,b);}int main(){ int a = 1; int b = 10;

2020-10-21 22:13:10 578

原创 枚举enum

C enum(枚举)枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。枚举语法定义格式为:enum 枚举名 {枚举元素1,枚举元素2,……};instance analysis:#include <stdio.h> enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN}; int main(){ enum DAY day; day = WED; printf("%d",day);

2020-10-17 15:15:49 100

转载 C++struct继承struct

#include<iostream>using namespace std; struct A{ int a; int b;};struct B : A{ int c;}; int main(){ struct B stB; stB.a = 1; cout<<stB.a<<endl; return 0;}C++ 里面结构体是可以继承的,你可以自己从上面的代码中复制下来,class 改为 struct ,一样能用。st

2020-10-16 08:33:36 1150

转载 C_Cpp变量命名规范

驼峰命名法1.1 小驼峰法除第一个单词之外,其他单词首字母大写(常用于:变量)int myStudentNumber1.2 大驼峰法(帕斯卡命名法)每一个单词的首字母都采用大写字母(常用于:类名,函数名,属性,命名空间)class StudentFamily2. 匈牙利命名法变量名=属性+类型+对象描述,这样做的好处是使程序员第一眼看到变量时就对变量的类型和其它属性有直观的了解。2.1 匈牙利命名法 - 属性全局变量g_常量c_类的成员变量m_静态变量s_2.2 匈牙.

2020-10-16 08:27:10 460

空空如也

空空如也

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

TA关注的人

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