自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (1)
  • 收藏
  • 关注

原创 驱动模型

#include #include #include #include #include //设备结构体 struct xxx_dev_t{ struct cdev cdev; ...}xxx_dev;/*打开*/int xxx_open(struct inode *inode, struct file *filp){ /*************

2017-08-18 00:29:14 308

原创 linux驱动内核裁剪及烧录

c裁剪在menuconfig中选择

2017-08-16 23:28:41 1097

原创 C++知识总结(22)

106. vector的优缺点优点:(1)不确定内存大小的数组的连续存储,可以像数组进行动态操作;(2)随机访问方便,即支持[ ]操作符和vector.at()(3)节省空间缺点:(1)在内部进行插入删除操作效率低(2)只能在vector的最后进行push和pop,不能在vector的头进行push和pop(3)当动态添加的数据超过vector默认分配的大小时要进行

2017-08-12 13:06:43 266

原创 C++知识总结(21)

101. 标准库的六大组建分别是什么?有什么作用1、容器(Containers):各种数据结构,如Vector,List,Deque,Set,Map,用来存放数据,STL容器是一种Class Template,就体积而言,这一部分很像冰山载海面的比率。2、算法(Algorithms):各种常用算法如Sort,Search,Copy,Erase,从实现的角度来看,STL算法是一种Func

2017-08-12 13:06:32 204

原创 C++知识总结(20)

96编译型语言和解释型语言的区别关于“编译型语言”和“解释性语言”的区别编译型是一次性编译成“二进制”(都是变成二进制),以后用时不用再编译了解释性语言是边编译边执行,根据执行规则(脚本语言规则)来告诉计算机要作什么97 程序由源文件到可执行文件经过哪几步?分别做些什么1.编辑:也就是编写C/C++程序。2.预处理:相当于根据预处理指令组装新的C/C++程序。经过预处理,会

2017-08-12 13:06:19 178

原创 C++知识总结(19)

86 C++是如何实现代码的扩展性的?利用多态机制提高了代码的扩展性。87 虚函数是如何实现多态的  多态是指同一接口,对于不同的对象,可以有不同的执行结果。简单的说,就是用基类的引用指向子类的对象。  为什么要用多态呢?原因:我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态除了代码的复用性外,还

2017-08-12 13:06:05 231

原创 C++知识总结(18)

81 什么是虚函数?虚函数是运行时多态不可少的技术,虚函数的存在主要是允许基类指针调用派生类函数82 什么函数不能声明为虚函数普通函数(非成员函数),构造函数,内联函数,静态成员函数,友元函数都不能声明为虚函数。83 举例谈一谈如何解决多继承中的二义性问题二义性解决方法: 1:虚基类2: 作用域限定符虚继承主要解决二义性的问题,并且为最远派生类提供唯一的基类成员,而不产

2017-08-10 21:51:36 210

原创 C++知识总结(17)

77 有哪些不能自动继承的成员函数构造函数,析构函数,拷贝构造函数,析构函数。78 C++中接口继承与实现继承的区别    非虚函数:强制实现继承虚函数:可视继承纯虚函数:接口继承79 基类与派生类之间转换的情况a) 对象的转换:1,派生类对象到基类对象的转换: 在用户代码中,只有公有继承时可以转换。在派生类成员函数中,均可进行转换。2,基类对象到派生类对象不可

2017-08-10 21:51:17 317

原创 C++知识总结(16)

71 mutable关键字的作用mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在

2017-08-10 19:37:54 177

原创 C++知识总结(15)

66 一个空类会默认生成哪些成员1. 无参的构造函数Empty(){}2. 拷贝构造函数Empty(constEmpty©){}3. 赋值运算符Empty&operator= (constEmpty©){}4. 析构函数(非虚)~Empty(){}这些函数只有在第一次使用它们的时候才会生成,他们都是inline并且public的。如果想禁止生成这些函数,可以将它们定义成privat

2017-08-10 19:37:32 185

原创 C++知识总结(14)

61 类的成员变量的初始化顺序1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。2、如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。3、注意:

2017-08-10 19:37:13 209

原创 C++知识总结(13)

56 桥接模式的使用范围 在以下的情况下应当使用桥梁模式:1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。 2.设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。3.一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。 4.虽然在系统中使用继承是没有问题的,但

2017-08-10 19:36:23 198

原创 C++知识总结(12)

51 建造者模式和工厂模式的区别?      工厂模式一般都是创建一个产品,注重的是把这个产品创建出来就行,只要创建出来,不关心这个产品的组成部分。从代码上看,工厂模式就是一个方法,用这个方法就能生产出产品。             建造者模式也是创建一个产品,但是不仅要把这个产品创建出来,还要关系这个产品的组成细节和组成过程。从代码上看,建造者模式在建造产品时,这个产品有很多方法,建造者

2017-08-10 16:45:29 153

原创 C++知识总结(11)

46 什么是STL?STL六大组件是什么及关系?什么是STL1、STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。2、包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序 员们提供了一个可扩展的应用框架,高度体现了软件的可复用性3、从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic prog

2017-08-10 16:44:57 187

原创 C++知识总结(10)

42 如何调试内存错误?1.利用gdb逐步查找段错误: 2.分析Core文件3.段错误时启动调试4.4.利用backtrace和objdump进行分析  43 STL类库a) =,assign() //赋以新值 b) swap() //交换两个字符串的内容 c) +=,append(),push_back() //在尾部添加字符 d) insert()

2017-08-10 15:44:57 199

原创 C++知识总结(9)

41 函数模板与类模板的使用 函数模板是一种不说明某些参数的数据类型的函数,模板定义以关键字template开头,关键字class(或typename)表示其后的标识符T是模板参数(类型参数),用来指定函数模板abs()中参数val的数据类型,随后是函数模板abs()的定义。定义函数模板时,参数化的数据类型T可以用来声明函数的参数和返回值,在函数体中还可以用来声明工作变量。

2017-08-10 09:25:02 181

原创 C++知识总结(8)

34  C与C++变量初始化有什么不同1)在C语言中全局变量存放在全局数据区,由编译器建立,如果在定义的时候不做初始化,系统会将其自动初始化,数值型为0,字符型和指针变量会自动赋值为NULL。静态变量和全局变量类似。而非静态局部变量不做初始化,它的值将是随机数。2)在C++中,如果在一个文件中定义了int a=5,要在另一个文件中定义int b = a的话,前面必须对a进行声明:exter

2017-08-09 23:23:37 189

原创 C++知识总结(7)

31 inline关键字的作用?适用场合?使用注意事项?1、在C++中,在类的内部定义了函数体的函数,被默认为是内联函数。而不管是否有inline关键字。2、如果函数的定义放在类的外部,函数定义前必须加inline才能成为内联函数,而函数声明可以加inline也可以不加3、关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。

2017-08-09 23:22:48 205

原创 C++知识总结(6)

26 extern关键字的作用?适用场合?使用注意事项?extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。  27 const关键字的作用?适用场合?使用注意事项?(1)在C语言中用const去修饰一个变量,表示这个变量是只读的,不可通过显式的调用a去修改a的值,并且此

2017-08-09 23:17:01 167

原创 C++知识总结(5)

21.new/delete 与malloc/free 的区别1. new/delete是C++的操作符,malloc/free是C/C++标准库函数。2. new分为两步的:第一步是申请内存,第二步则是调用构造函数初始化对象。同样,在调用delete的时候,需要先调用析构函数,然后再回收堆内存。malloc只会根据参数分配内存,默认返回指向void*的指针,同样free释放malloc分配

2017-08-09 23:16:49 168

原创 C++知识总结(4)

16、引用和指针的区别相同点:        都是地址的概念;       指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。 不同点:  指针是一个实体,而引用仅是个别名;  引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;  引用没有const,指针有const,const的指针不可变;  引用不能

2017-08-09 22:51:58 159

原创 C++知识总结(3)

11、全局变量与静态变量的区别全局变量与全局静态变量的区别:  (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。  (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。 (c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过ext

2017-08-09 20:59:42 162

原创 c++知识总结(2)

6、内存分配的形式有哪些?内存分配有三种方式:一:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。二:从栈区分配:在执行函数的时候,函数中的局部变量的存储单元都可以从栈中分配,函数执行结束后这些存储单元都会被自动释放,实现从栈中分配存储单元运算操作内置于处理器的指令集中,效率很高但是分配的内存容量有限。

2017-08-09 20:38:28 181

原创 C++知识总结(1)

1、C语言之父是谁?为什么要开发C语言?丹尼斯里奇C语言语法结构简洁精妙,功能强大,便于描述算法。‚ C语言能深入系统底层。我们所知道的操作系统Windows、Unix、Linux、Mac、OS/2,都是用C语言写的。ƒ很多新的语言都衍生自C语言,如C++、Java、C#、J#、Perl。 2、C语言和汇编语言的区别·汇编:效率高,对硬件的可操控性更强,体积小,不易维

2017-08-09 20:36:46 185

原创 mysql数据库的简单操作

在虚拟机中的操作1.  sqlite3  text.db(文件名) 没有则自动创建2.   .tables  查看表3. 创建表create table student (ID        INTERGER,name TEXT,sex     TEXT,age    INTEGER,primary  key(ID)

2017-08-09 14:12:31 207

原创 new/delete与malloc/free的区别

在c++中,申请内存与释放动态内存,用二者都可以,并且存储方式相同,new与malloc申请内存都在堆中,操作系统无法自动回收,需要对应的delete与free来释放内存。c语言中需要头文件,new/delete是c++运算符。对于类的对象而言,malloc/free 无法满足动态对象的要求。具体而言有以下几个区别:1)new能够自动计算需要分配的内存,而malloc2)3

2017-08-09 14:11:56 471

原创 笔试题 统计字符串单词数

如何统计一行字符串中有多少单词。测出某个字符为空格则表示一个单词。如果一个字符前一个字符为空格则表示新单词开始#include#define BUFFERSIZE 1024int main(){ char string [1024]; int i, count = 0, word = 0; char c; gets (string); for (i=0; (c=str

2017-08-07 20:24:37 350

原创 笔试题 合并两个有序链表

已知两个链表head1和head2各自有序,请把他们合并成一个链表依然有序1  3 5 7,2 4 6 8,合并 1 2 3 4 5 6 7 8代码实现如下//思路:比较两个链表中data的值按小到大重新分到新的链表中Node * Merge(Node *head1 , Node *head2) { if ( head1 == NULL) //如果

2017-08-07 13:02:52 390

原创 多线程实现相关函数

1 线程的创建pthread_create 函数用于创建线程表头文件:#include定义函数:int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void*(*start_rtn)(void),void*restrict arg)函数说明:pthread_t *

2017-08-07 11:26:19 341

原创 笔试题网络编程的API及作用

1.写出网络编程的API及作用1)socket 用于建立一个socket2)  bind 用于对socket进行定位或地址绑定3)listen 等待连接4)accept 接受socket 连接5)connect 用于建立socket 连接6)send 传送数据7)recv 接受数据2.四层网络模型(TCP/IP)与七层网络模型(IOS) 1)四层:网络接

2017-08-07 10:07:57 620

原创 关键字volatile有什么含义

一个定义为volatile的变量可能会有意想不到的改变,这样编译器就不会去假设这个变量的值了,精确的说,就是优化器在用到这个变量时必须每次都小心的重新读取这个值,而不是使用保存在寄存器里的备份。下面是volatile变量的例子:1)并行设备的寄存器;2)一个中断服务子程序中会访问到非自动变量;3)多线程应用中

2017-08-07 10:07:04 494

原创 重载与重写(覆盖)的区别

1.重载是指子类改写父类的方法。重载是编写一个与已有函数同名但参数表不同的方法,具体特征如下:1)方法名必须相同2)参数列表必须不相同,与参数列表顺数无关3)返回值类型可不相同2.重写是指同一函数的不同版本之间参数不同。重写是派生类重写的虚函数,具体特征如下:1)只有虚方法和抽象方法才能被重写2)相同的函数名3)相同的参数列表4)相同的返回类型

2017-08-07 10:06:26 437

原创 面试题求一个整数中二进制1的个数

题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的

2017-08-06 22:20:48 288

原创 网络编程基础知识巩固

1.  makefile的作用: makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefil

2017-08-06 22:08:27 275

原创 C语言同学录(通讯录)的实现

这个很久以前就完成了,一直没贴出来。这个同学录实际上就是通讯录,使用链表实现,也算是对链表的一种运用吧。具体功能看Menu函数。#include#include#includetypedef struct Student{ char name[20]; char tel[20]; char qq[20]; char address[20]; struct Stu

2017-08-06 21:49:50 4538 5

原创 编程实现冒泡排序

冒泡是最简单也很好理解的一种排序方式,大学C语言教科书就用这种方法,期末考试必考题之一。每次排序将最大的值往后排,他和选择排序相似,选择是把小的数往前压。/* 冒泡 */#include#includeint main() { int i,j,temp; int a[] = {9,8,7,6,5,4,3,2,1,0}; int len = sizeof(a)/s

2017-08-06 00:40:50 5150

原创 编程实现插入排序

/* 插入排序*/#includevoid insertsort(int par_array[],int array_size){ int i,j; int temp; for (i=1; i<array_size; i++) { temp = par_array[i]; for (j=i-1; j>=0; j--) { if (temp < par_array[j

2017-08-06 00:36:52 966

原创 编程实现归并排序

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a[i]复制到r[k]

2017-08-06 00:28:16 702

原创 编程实现快速排序

#includevoid quicksort(int a[],int left,int right){int i,j;if(left {i = left;                                      //left、right用于限定要排序数列的范围,temp即为中心元素j = right;int temp = a[left];

2017-08-06 00:25:27 944

原创 编程实现统计一行字符串中大小写字母,数字的个数

直接上代码#includeint main(){ int big = 0; int small = 0; int space = 0; int number = 0; int others = 0; printf("please input a str:\n"); char a[50]; fgets(a,50,stdin); //stdin 意思是键盘输入 //get

2017-08-06 00:04:32 5184

PCB Logo Creator

在PCB 中加入logo图片添加脚本。

2018-10-24

空空如也

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

TA关注的人

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