- 博客(16)
- 资源 (22)
- 收藏
- 关注
转载 哈弗结构和冯诺依曼结构的区别
哈佛结构是,数据和代码分开存在。冯诺依曼结构是在哈佛结构之后提出的,冯诺依曼提出“代码本身也是一种数据”,解决了哈佛结构的一个问题——总线暂用资源太多。冯诺依曼结构是,数据和代码放在一起。首先,通过BIOS(Uboot)将硬盘(Flash)中的程序(数据和代码),全部拷贝到RAM。所以此时RAM内部会分为多个段——代码段,date段,bss段等等。这样相比哈佛结构,就节省了...
2019-04-29 17:02:38 5578 2
原创 C++ 0428 指针和空间分配
文件打开文件ifstream 是用于读取文件的istream流,ofstream是用于写文件的ostream流,!ost检测文件是否成功打开。I/O错误处理good()操作成功eof()到达输入尾部fail()发生某些意外情况(例如,我们要读入一个数字,却读入了字符‘x’)bad()发生严重的意外(如磁盘读故障)读取单个值将程序分解为易管理的子模块读取结构化的...
2019-04-29 14:55:40 1286
转载 C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话...
2019-04-26 07:27:49 939
原创 C++ 0425 笔记
类接口参数类型注意代码中使用了枚举量mar的限定名Month::mar。我们没有用Month::mar,因为Month不是一个对象(而是一个类型),而mar也不是一个数据成员(而是一个枚举量-----一个符号常量)。我们在类名、枚举名或名字空间名后使用::,而在对象后使用.(点)。拷贝默认构造函数未初始化的变量可能会成为错误之源。为了解决这个问题,我们可以用构造函数来保证...
2019-04-25 08:00:36 91
原创 C++ 0424 之运算符重载
一个重载的运算符必须作用域至少一个用户自定义类型的运算对象:int operator+(int, int); //错误:不能重载内置类型+运算符Vector operator+(const Vector&, const Vector&); //正确Vector operator+=(const Vector&, int); //正确C++ 允许在同一作用域中...
2019-04-24 07:40:50 137
原创 C++ 0423之枚举
枚举类型enum class Month{jan=1, fed, mar, apr, may, jun, aug, sep, oct, nov, dec};一个枚举定义的体就是一个简单的枚举列表。enum class 中的class表示枚举量在枚举作用域内,也就是说,必须用Month::jan来表示jan。Month m2 = feb; //错误:feb不在作用域内m = 7; /...
2019-04-23 07:40:00 109
原创 C++学习之0418 constexpr函数
在编译时对函数进行计算的想法可通过将函数声明为constexpr来实现。constexpr double xscale = 10;constexpr double yscale = 0.8;constexpr Point scale(Point p) {return { xscale*p.x, yscale*p.y};};void user(Point p1){ Point...
2019-04-18 07:59:44 178
原创 constexpr函数
有点难理解权且记住,使用才会体会其中真正的差别。常量表达式的概念:在编译期就可以计算出结果的表达式。那么为什么要用常量表达式呢,用常量表达式会有什么好处:1.允许一些计算只在编译时进行一次,而不是每次程序运行时;2.编译器可以进行尺度更大的优化;3.可以用在需求编译期间常量的上下文,例如数组长度等;使用constexpr修饰变量时:const 变量的初始化可以延迟到运行时,...
2019-04-17 08:02:00 3393
原创 C++学习之0416 对函数细节的学习(二)
在函数中我们可以直接操作任何引用方式传递来的对象。double x = 1;double y = 2;swap(x,y);void swap(double& d1, double& d2){ double temp = d1; d1 = d2; d2 = temp;}传值和传引用的对比void f(int a, int& r,...
2019-04-16 07:48:31 129
原创 C++学习之0415 对函数细节的学习
再多的天赋也战胜不了对细节的偏执函数和变量定义消耗了内存,而声明却没有。const int y;// 错误如果一个常量没有值的话,它何以为常量呢?作用域的主要作用是保持名字的局部性,不影响声明于其他地方的名字。一个名字的作用域越大,名字就应该越长、越有描述性:将全局变量命名为x、y和f是灾难性的。C++还提供了一种语言特性:名字空间,专门用于表达作用域。在函数声明和定义中...
2019-04-15 07:55:46 143
原创 C++学习0414之C++ vector 容器
一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2.动态数组支持对序列中的任意元素进行快速直接访问...
2019-04-14 17:05:08 134
原创 C++学习0413之迭代器 iterator
迭代器 iterator迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。一.定义和初始化每种容器都定义了自己的迭代器类型,如vector:vector<int>::iterator iter; //定...
2019-04-14 15:07:01 270 1
原创 C++学习0410
C++ 类定义需要注意的是,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问.class 有点像C语言的结构体。类成员函数:类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。class Box{ public: double length; // 长度 double breadth; ...
2019-04-11 21:04:25 166
原创 C++学习0411
构造函数 & 析构函数 :类的构造函数是一种特殊的函数,在创建一个新的对象时调用。类的析构函数也是一种特殊的函数,在删除所创建的对象时调用。构造函数:构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。析构函数 :类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称...
2019-04-11 21:03:21 107
原创 C#学习笔记0408
C# 中的析构函数类的 析构函数 是类的一个特殊的成员函数,当类的对象超出范围时执行。析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。C# 继承继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。...
2019-04-08 15:04:47 146
STM32F429FreeRTOS开发手册V1.1
2018-11-12
【原创】讯联电子DA14580实战教程---DA14580 SDK介绍
2018-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人