嵌入式笔试
非小号
这个作者很懒,什么都没留下…
展开
-
进程与线程
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 在Mac、Windows NT等采用微内核结构的操作系统中,进程的功转载 2012-08-31 22:29:35 · 433 阅读 · 0 评论 -
重写和重载与隐藏
1、重载的特征:在同一个类中;函数名字相同;参数不同;virtual 关键字可有可无。 2、重写(覆盖)特征是:分别位于派生类与基类;函数名字相同;参数相同;基类函数必须有virtual 关键字(这点非常要注意)。 个人认为以上两点比较容易记得住,但是C++的隐藏规则使问题复杂性陡然增加。规则如下: 1、如果派生类的函数与基类的函数同名,但是参数不同,virtual关键字原创 2012-10-18 09:40:34 · 667 阅读 · 0 评论 -
c/c++ 经典笔试
1、 编写类String的构造函数、析构函数和赋值函数,已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); /原创 2012-08-31 15:22:13 · 743 阅读 · 0 评论 -
函数模板与类模板
模板 模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。模板分为函数模板和类模板两种。 (1)函数模板 函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板: template class T> //或写转载 2012-10-17 20:43:54 · 493 阅读 · 0 评论 -
空类中成员函数
答: class Empty { public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取址运转载 2012-10-17 22:25:52 · 1130 阅读 · 0 评论 -
swap函数
大家都懂,就不用多说,用引用或者指针就能解决这个问题(在c++中用引用是更好的做法,引用不是c的语法吧)。 问题在于,笔试面试中考的比这个更有难度一点,加了个限制:不使用中间变量。知道答案之后还是比较简单的,直接上答案了: void swap(int &a,int &b) { a=a+b; b=a-b; a=a-b; } 还有一种思路更高明,因为上面转载 2012-10-12 20:36:19 · 471 阅读 · 0 评论 -
windows 进程间通信
Windows内核所支持的进程间通信手段有: l 共享内存区(Section)。 l 信号量(Semaphore)。 l 互斥门(Mutant)。 l 事件(Event)。原创 2012-09-22 15:15:28 · 825 阅读 · 0 评论 -
C/C++注意几点<必看>
YI. 堆栈溢出一般是由什么原因导致的? 递归调用深度过深(栈)或垃圾未回收 Y2. 什么函数不能声明为虚函数? 一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。 设置虚函数须注意: 1:只有类的成员函数才能说明为虚函数; 2:静态成员函数不能是虚函数; 3:内联函数不能为虚函数; 4:构造函数不能是虚函数; 5:析构函数可以是虚函数,而且通原创 2012-08-31 23:24:19 · 640 阅读 · 0 评论 -
如何优化C/C++语言代码
如何优化C/C++语言代码(程序员必读) 1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用转载 2012-10-10 15:40:00 · 3076 阅读 · 0 评论 -
键盘扫描程序
http://wenku.baidu.com/view/88e529e919e8b8f67c1cb963.html原创 2012-09-19 15:27:30 · 623 阅读 · 0 评论 -
大小端转换
大小端转换方法: #include #include #define Tranverse16(X) ((((UINT16)(X) & 0xff00) >> 8) |(((UINT16)(X) & 0x00ff) #define Tranverse32(X) ((((UInt32)(X) & 0xff000000) >> 24转载 2012-09-19 14:29:02 · 9215 阅读 · 1 评论 -
BSS段,数据段,代码段,堆内存和栈
原创 2012-09-14 10:16:35 · 672 阅读 · 0 评论 -
C++指针与引用区别
指针和引用的区别总结 1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变 2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域 3.从编译上看:程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不转载 2012-08-31 22:55:56 · 279 阅读 · 0 评论 -
嵌入式笔试1
1. main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1);//ptr实际是a[5] printf("%d,%d",*(a+1),*(ptr-1)); } 答:2,5 *(a+1)就是a[1],*(ptr-1)就是a[4], 执行结果是2, 5。&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个原创 2012-08-31 12:02:18 · 970 阅读 · 1 评论 -
经典笔试2
1、写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回 9,outputstr所指的值为原创 2012-08-31 21:24:15 · 367 阅读 · 0 评论 -
几个面试题精选
面试题35:typedef和define有什么区别 (1)用法不同:typedef用来定义一种数据类型的别名,增强程序的可读性。define主要用来定义常量,以及书写复杂使用频繁的宏。 (2)执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。 (3)作用域不同:typedef转载 2012-10-18 10:26:34 · 965 阅读 · 0 评论