- 博客(16)
- 资源 (18)
- 问答 (1)
- 收藏
- 关注
原创 Effective C++读书笔记二
二构造/析构/赋值运算几乎你写的每个class都会有一或多个构造函数、一个析构函数、一个拷贝赋值操作符。如果这些函数犯错,会导致深远且令人不愉快的后果,遍及整个classes。所以确保它们行为正确是生死攸关的大事。条款05:了解C++默默编写并调用哪些函数如果你自己没声明,编译器就会为类声明(编译器版本的)一个拷贝构造函数,一个拷贝赋值操作符和一个析构函数。此外如果你没有声明任何构造
2015-09-30 17:19:37 530
原创 宏的缺陷
在c中,保持效率的一个方法是使用宏,宏可以不要普通的函数调用代价就可使之看起来像函数调用。宏的实现是用预处理器而不是编译器。 宏的缺陷 问题一: 表达式在宏内展开,所以它们的优先级不同于所期望的优先级。例如:#define FLOOR(x,b) x>=b?0:1if(FLOOR(a&0x0f,0x07))宏将展开成:if(a&0x0f>=0x07?0:1)因为&的优先级比>=的低,所以宏
2015-09-28 20:14:49 697
原创 数据结构之树
数据结构之树树根据实现方式,数据结构可以分为两种类型:基于数组的实现与基于链表的实现。它们都是线性结构。而树是半线性结构。树是由节点和弧组成。形状和现实生活的树不同,是倒立的。节点的层次是从根节点到该节点的路径,或者说层次是该路径上的节点数量。层次其实就是深度。非空树的高度是树中节点的最大层次(深度),即。空树是高度为-1的合法树、单一节点是高度为0 的树(这个定义是根据清华大学邓俊辉版)。 简单
2015-09-27 21:15:20 679
原创 编译原理学习之运行时数据区的管理
存储单元分配策略1、静态存储分配•在编译时就可以完全为数据项目分配存储单元,称为静态存储分配。 •注:若一个程序设计语言不允许递归调用,而且不含有可变数组,则可使用静态存储分配策略。2、动态存储分配•在运行时才能进行数据存储单元分配,称为动态存储分配。 •注: 1)若某程序设计语言允许过程递归调用,而且允许使用可变数组,那么在编译时就不可能完全为其数据项目分配存储单元,必须采取动态存储分配策略
2015-09-25 16:40:21 1010
原创 编译原理学习之语法分析
1、语法分析的地位 –是编译程序的核心部分。 2、语法分析的任务 –识别由词法分析得出的单词序列是否是给定文法的句子。 3、语法分析的理论基础 –上下文无关文法和下推自动机 4、语法分析的方式 1)自上而下语法分析 •反复使用不同产生式进行推导以谋求与输入符号串相匹配。 2)自下而上语法分析 •对输入符号串寻找不同产生式进行归约直到文法开始符号。4.1下推自动机(PDA) 1)
2015-09-24 20:56:58 1673
原创 编译原理学习笔记之词法分析
词法分析词法分析是编译的第一个阶段,在单词的级别上分析和翻译源程序。3.1正规文法和有限自动机正规文法 – 是Chomsky 3型文法 正规文法是描述正规集(语言的集合)的文法,可用于描述程序设计语言的语法部分。 正规式 – 设A是非空的有限字母表,A={ai| i=1,2,……n},则 1. ε,Φ和ai (i=1,2,……n)都是正规式。 2. 若α、β是正规式,则α|β、 α•β
2015-09-23 21:41:35 1933
原创 编译原理学习笔记-2
声明: –以下引自东南大学的编译原理课件2编译基础知识-词法规则:规定那些字符是单词符号,一般包括:数值,标识符等等 -语法规则:规定单词符号构成的语法单位:表达式,子句,语句,函数,过程,程序- -语义规则:语义,程序的含义。定义程序的意义的一组规则 文法: 描述程序设计语言构造的层次化语法结构。2.1 字母表与符号串相关概念1、字母表 – 是符号的非空有穷集合。 – 用Σ、
2015-09-22 22:05:40 1516
原创 编译原理学习笔记-1
1.1程序设计语言与编译1)程序设计语言-. 高级语言 :c,c++ -. 汇编语言 :有字母组合成命令符号。对于不同硬件机器,有不同的汇编语言,因为有不同的机器语言。 -. 机器语言 :只有0、1表示 高级语言执行步骤:将高级语言翻译成机器语言,然后运行机器语言得到结果2)程序设计语言的转换,有两种方法编译:将高级语言整个转换成低级语言 解释:对输入的一句语言解释,并执行马上
2015-09-21 22:31:13 693
原创 指针和指针的引用作为参数——c++
指针和指针的引用作为参数–c++指针都清楚,存放变量地址的变量。那么指针指向的数据是可以改变,而指针本身是不可以改变的。表示为: *P; 指针的引用, 相当于指针的指针。 作为参数传递时,这样指针的数值是可以改变的 ,表示为: *&P fun(int * pA); // pA的数值在函数返回后不会变化 fun(int*& pA); // pA的数值
2015-09-19 21:57:50 4352 4
原创 c++面试题之打印1到最大的n位数
打印1到最大的n位数输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3,一直到最大的3位数即999. 思路:看是简单,但是需要注意数据超出类型范围,会溢出。所以较大的数如何表示,才是需要思考的问题。 进一步思路:用字符串表示大数。在字符串上模拟数字加法的解法。字符串里每个字符都是‘0’到‘9’之间的数字。因为数字最大时n位的,所以需要长度n+1的字符串。
2015-09-19 10:44:52 1030
转载 Android 中的 Service 全面总结
1、Service的种类按运行地点分类: 其实remote服务还是很少见的,并且一般都是系统服务。 按运行类型分类: 有同学可能会问,后台服务我们可以自己创建 ONGOING 的 Notification 这样就成为前台服务吗?答案是否定的,前台服务是在做了上述工作之后需要调用 startForeground ( android 2.0 及其以后版本 )或 setForeground
2015-09-16 15:12:36 614
原创 android 设置监听器
1、什么是监听器?您需要记住以下几点: 1、监听器是个抽象类,它包含了一个事件触发时系统会去调用的函数 2、在子类中,根据您项目的需要重写这个函数 3、派生后的监听器需要绑定到按钮上,就像一个耳机可以发出声音,但您不去戴它,您是听不到它发出的声音的。一般的情况是这个按钮可能需要这个监听器,而另外一个按钮需要另外一个监听器,每个监听器各司其职,但功能相似时,也可以多个按钮共同绑定一个监听器。
2015-09-16 10:06:52 1032
原创 android应用基础--翻译自官方帮助文件
android应用基础android 应用是由Java语言编写的。由androidd SDK编译和数据资源文件组合成一个APK:一个android包,后缀是.apk。用来安装在android设备上。
2015-09-15 16:30:08 401
原创 Socket编程
Socket编程主要内容:什么是Socket?Socket基本通信模型使用基于TCP协议的Socket使用基于UDP协议的Socket
2015-09-14 09:49:00 669
原创 快速排序算法c++实现
快速排序算法c++实现算法思想:首先任意选取一个数据作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。 具体做法是:选取中间的数据作为基准值(平均来说效率更高),并与第一个数据进行交换。然后从左边找比基准值大的数,从右边找比基准值小的数。满足一定条件进行
2015-09-07 11:18:21 571
mfc工具栏上的按钮添加
2014-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人