微软最有价值专家分享校园招聘心得体会
摘要:http://bbs.csdn.net/topics/390620351?page=1#post-395850952 阅读全文
posted @ 2013-10-22 11:46 李sir 阅读(535) 评论(0) 推荐(2) 编辑
题目
摘要:查数据库30-40条记录Select Top 10 * from Tablename Where 关键字段 Not In (Select Top 30 关键字段 from TableName Order By 排序字段) Order By 排序字段子查询查出前30条记录。查出10条记录并且不在前30个子查询中的记录即可select top 10 * from device where CreatedDate not in (select top 30 CreatedDate from Device order by EditDate) order by... 阅读全文
posted @ 2011-12-15 13:09 李sir 阅读(464) 评论(0) 推荐(0) 编辑
C++静态成员函数小结(转)
摘要:类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class 阅读全文
posted @ 2011-01-24 15:28 李sir 阅读(101934) 评论(3) 推荐(17) 编辑
C/C++必知必会1
摘要:2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 3. 将“引用”作为函数参数有哪些特点? (1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数 阅读全文
posted @ 2011-01-18 17:20 李sir 阅读(4029) 评论(3) 推荐(5) 编辑
Google "Microsoft Interview Questions"
摘要:http://old.blog.edu.cn/user2/60478/archives/2006/1211462.shtml 阅读全文
posted @ 2011-01-16 20:03 李sir 阅读(312) 评论(0) 推荐(0) 编辑
Ms的一道面试题
摘要:把二进制数当成数组进行左移运算的,没隔四位要输出一个空格,我在这里看到此题:一个给定的数值由左边开始升位到右边第N位,如 00101 == 0100 或者 0001 00114 == 0011 0000 请用C或者C++或者其他X86上能运行的程序实现。题目要求是可以对带格式的(4位一空格)二进制数进行位操作。接收带有空格的输入可以用cin.getline()函数,要求一个字符数组作为参数,以及最多能接收的长度和以及一个表示结尾的字符。此题没有什么特别之处,就是记住在输出的时候每四位一个空格,并且要忽略输入行中的空格。我的算法复杂度为O(n):Code highlighting pro 阅读全文
posted @ 2011-01-16 19:55 李sir 阅读(757) 评论(1) 推荐(0) 编辑
Baidu C++吧上的一道题
摘要:题目在:http://post.baidu.com/f?kz=70481398统计字母个数:程序输入一个字符串(长度不超过100),全是小写字母.统计小写字母出现的次数,并用要求的图表示出来.测试数据:Input:sadjhasdhqwpopeepomcxnnbladkjkfjasjasOutput:@@ @ @@ @ @ @ @@ @ @ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @a b c d e f g h i j k l m n o p q r s t u v w x y z注意:在字符串中每个小写字母的个数不会超过20个.编程语言 阅读全文
posted @ 2011-01-16 19:45 李sir 阅读(692) 评论(0) 推荐(0) 编辑
链表逆序的笔试题
摘要:题目出处:http://blog.rainbud.net/article/entry20050928-014721给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序排列,例如:1. N1-N2-N3-N4-N5-NULL pHEAD = N1,pSTART = N3,返回N3-N2-N1-N5-N4-NULL2. N1-N2-N3-N4-N5-NULL pHEAD = N1,pSTART = N5,返回N5-N4-N3-N2-N1-NULL3. N1-N2-N3-N4-N5-NULL pHEAD = N1,pSTART 阅读全文
posted @ 2011-01-16 19:27 李sir 阅读(8946) 评论(0) 推荐(0) 编辑
IT公司笔试题总结(三)
摘要:试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?least = MIN(*p++, b); 解答:#define MIN(A,B) ((A) = (B) ? (A) : (B)) MIN(*p++, b)会产生宏的副作用剖析:这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。程序员对宏定义的使用要非常小心,特别要注意两个问题:(1) 谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答 阅读全文
posted @ 2011-01-16 18:18 李sir 阅读(1424) 评论(0) 推荐(0) 编辑
部分IT公司的笔试小算法题精选
摘要:1、将一整数逆序后放入一数组中(要求递归实现)void convert(int *result, int n) {if(n=10)convert(result+1, n/10);*result = n%10; }int main(int argc, char* argv[]) {int n = 123456789, result[20]={};convert(result, n);printf("%d:", n);for(int i=0; i9; i++)printf("%d", result[i]);}2、求高于平均分的学生学号及成绩(学号和成绩人工输入)double find(int 阅读全文
posted @ 2011-01-15 20:27 李sir 阅读(1717) 评论(2) 推荐(0) 编辑
IT公司智力测试题
摘要:1.有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?//-------------------------------------------------答案:第一步:A(1)和B(2)过桥,A(1)返回 Cost:1+2 第二步: C(5)和D(10)过桥,B(2)返回 Cost:10+2 第三步: A(1)和B(2)过桥 Cost:22.有一个埃及人拾到一枚标有“公元前3世纪”的金币,他问一个考古学家,考古学家说是假币,问为什么? 因为在那个时候没有公元( 阅读全文
posted @ 2011-01-15 20:25 李sir 阅读(1667) 评论(0) 推荐(1) 编辑
IT公司笔试题总结(二)
摘要:1. 找错试题1:Void test1(){char string[10];char* str1="0123456789";strcpy(string, str1);}试题2:Void test2(){char string[10], str1[10];for(I=0; I10;I++){str1[i] ='a';}strcpy(string, str1);}试题3:Void test3(char* str1){char string[10];if(strlen(str1) = 10){strcpy(string, str1);}}在swap函数中,p是一个“野”指针,有可能指向系统区,导 阅读全文
posted @ 2011-01-15 20:21 李sir 阅读(2391) 评论(0) 推荐(0) 编辑
IT公司笔试题总结(四)
摘要:3.技巧题试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1解答: int checkCPU(){ { union w { int a; char b; } c; c.a = 1; return (c.b == 1); }}剖析: 嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方 式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- e 阅读全文
posted @ 2011-01-15 19:58 李sir 阅读(1024) 评论(0) 推荐(0) 编辑
IT公司面试题(五)
摘要:1.设一棵完全二叉树有700个结点,则在该二叉树中有多少个叶子结点如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。 可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1)/2 ,就可根据完 阅读全文
posted @ 2011-01-15 19:57 李sir 阅读(2618) 评论(0) 推荐(0) 编辑
嵌入式软件工程师面试题
摘要:1、将一个链表逆序 LinkList *reverse(LinkList *head){LinkList *p1,*p2 = NULL,*p3 = NULL;if(head == NULL || head-next == NULL)return head;p1 = head-next;while(p1!=NULL){p3 = p1-next;p1-next = p2;p2 = p1;p1 = p3;}head-next = p2;// head = p2;return head; }2、计算一个字节里(byte)里面有多少bit被置1#include stdio.hint com 阅读全文
posted @ 2011-01-15 19:55 李sir 阅读(14547) 评论(2) 推荐(2) 编辑
MTK深圳公司嵌入式软件工程师笔试题(含部分答案)
摘要:MTK深圳嵌入式软件工程师笔试题(B卷)1.#define pi 3.14#define Area(R) pi*R*Rmain(){int r1=5,r2=2;double s=0;s=Area(r1-r2);printf("The area is %f",s);}求结果: The area is 3.7000002.函数 int compare(int a,int b),定义为该函数的函数指针P:为 int(*p)(int,int);p= compare;3.求输出结果#includestdio.hvoid sub(char*s,int num){int i ,j=num;char t 阅读全文
posted @ 2011-01-15 19:54 李sir 阅读(4727) 评论(0) 推荐(0) 编辑
嵌入式软件工程师笔试题(含答案)
摘要:选择题 1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是 A.(a+b)*c/2 B.(1/2)*(a+b)*c C.(a+b)*c*1/2 D.c/2*(a+b) 参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。2:为了向二进制文件尾部增加数据,打开文件的方式应采用 A.″ab″ B.″rb+″ C.″wb″ D.″wb+″ 参考答案:D3:下述程序执行后的输出结果是 #include main() { int x='f'; printf("%c\n",' 阅读全文
posted @ 2011-01-15 19:53 李sir 阅读(18377) 评论(0) 推荐(3) 编辑
面试中经常出现的算法1
摘要:二分查找的代码.int bfind(int* a,int len,int val){ int m = len/2; int l = 0; int r = len; while(l!=m && r!= m) { if(a[m] val) { r = m; m = (m+l)/2; } else if(a[m] val) { l = m; m = (m+r)/2; } else return m; } return -1; //没有找到}写出在母串中查找子串出现次数的代码.int count1(char* str,char* s){ char* s1; char* s2; i 阅读全文
posted @ 2011-01-15 19:51 李sir 阅读(1819) 评论(0) 推荐(1) 编辑
嵌入式C语言面试题(二)
摘要:1 读程序段,回答问题int main(int argc,char *argv[]){int c=9,d=0;c=c++%5;d=c;printf("d=%d\n",d);return 0;}a) 写出程序输出b) 在一个可移植的系统中这种表达式是否存在风险?why?#include "stdio.h"int a=0; int b;static char c;int main(int argc,char *argv[]){char d=4;static short e;a++;b=100;c=(char)++a;e=(++d)++;printf("a=%d, b=%d, c=%d, d= %d 阅读全文
posted @ 2011-01-15 19:50 李sir 阅读(6661) 评论(0) 推荐(0) 编辑
嵌入式C语言面试题(一)
摘要:1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4). 如果你在你的表达式中用到UL(表示无符号长整 阅读全文
posted @ 2011-01-15 19:47 李sir 阅读(1878) 评论(0) 推荐(1) 编辑
嵌入式面试C语言试题
摘要:第1题: 考查对volatile关键字的认识#includesetjmp.hstaticjmp_bufbuf;main(){volatileintb;b=3;if(setjmp(buf)!=0){printf("%d",b);exit(0);}b=5;longjmp(buf,1);}请问, 这段程序的输出是(a) 3(b) 5(c) 0(d) 以上均不是第2题:考查类型转换main(){structnode{inta;intb;intc;};structnodes={3,5,6};structnode*pt=&s;printf("%d",*(int*)pt);}这段程序的输出是:(a) 3 阅读全文
posted @ 2011-01-15 19:45 李sir 阅读(1171) 评论(0) 推荐(0) 编辑
C语言面试算法题(二)
摘要:1.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789。#include stdio.h#include stdlib.h#include string.hint FindMax_NumStr(char *outputstr,char *i 阅读全文
posted @ 2011-01-15 19:43 李sir 阅读(1047) 评论(0) 推荐(0) 编辑
C语言面试算法题(一)
摘要:1.求组合数: 求n个数(1....n)中k个数的组合.... 如:combination(5,3) 要求输出:543,542,541,532,531,521,432,431,421,321,/*求组合数: 求n个数(1....n)中k个数的组合....如:combination(5,3)要求输出:543,542,541,532,531,521,432,431,421,321,*/#include stdio.h#include error.hint pop(int *);int push(int );void combination(int ,int);int stack[3]={0 阅读全文
posted @ 2011-01-15 19:40 李sir 阅读(2099) 评论(0) 推荐(0) 编辑
中兴笔试题
摘要:公共部分(50分) 1:作业调度程序从处于(B)状态的队列中选择适当的作业的作业投入运行。(3分) A 运行 B 提交 C 完成 D后备 2:SQL语言中,删除一个表的命令是(B)(3分) A CLEAR TABLE B DROP TABLE C DELETE TABLE D REMOVE TABLE 3:ATM采用的线路复用方式为(C)(3分) A 频分多路复用 B 同步时分多路复用 C 异步时分多路复用 D 独占信道 4:数据库中只存放视图的(C)(3分) A操作 B 对应的数据 C 定义 D 限制 5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10 阅读全文
posted @ 2011-01-15 19:38 李sir 阅读(8889) 评论(0) 推荐(0) 编辑
普天C++笔试题
摘要:1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答://假设线性表的双向链表存储结构typedef struct DulNode{ struct DulNode *prior; //前驱指针 ElemType data; //数据 struct DulNode *next; //后继指针}DulNode,*DuLinkList;//删除操作Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){ if(!(p=GetElemP_DuL(L,i))) //此处得到i位置的节点指针,如果有需要也得写出具体函数实现 ret 阅读全文
posted @ 2011-01-15 19:33 李sir 阅读(590) 评论(0) 推荐(0) 编辑
大唐电信面试试题
摘要:1.什么是中断?中断发生时cpu做什么工作? 中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。当外部中断,需要cpu暂停当前的任务,做相应的处理,cpu需要判断中断源,保存现场状态,以便能够处理完后继续执行中断的任务。2.CPU在上电后,进入操作系统的main()之前必须做什么工作? 过程如下: bios自举:检查硬件等读取MBR 转到MBR执行它的代码,它会检测活动分区把活动分区的引导扇区的引导代码装入内存运行引导代码引导代码装入该分区的操 阅读全文
posted @ 2011-01-15 19:22 李sir 阅读(1299) 评论(0) 推荐(0) 编辑
关于数组的几道面试题
摘要:1.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和。不过非常遗憾的是,由于长度为n的数组有O(n2),具体是n*(n+1)/2个子数组;而且求一个长度为n的数组的和的时间复杂度为O(n)。因此这种思路的时间是O(n3)。解题思路:很容易理解,当我们加上一个正 阅读全文
posted @ 2011-01-15 18:49 李sir 阅读(655) 评论(0) 推荐(0) 编辑
面试中经常出现的算法
摘要:二分查找的代码.int bfind(int* a,int len,int val){ int m = len/2; int l = 0; int r = len; while(l!=m && r!= m) { if(a[m] val) { r = m; m = (m+l)/2; } else if(a[m] val) { l = m; m = (m+r)/2; } else return m; } return -1; //没有找到}写出在母串中查找子串出现次数的代码.int count1(char* str,char* s){ char* s1; char* s2; i 阅读全文
posted @ 2011-01-15 18:38 李sir 阅读(502) 评论(0) 推荐(0) 编辑
Strcpy面试题的解析和注意事项
摘要:题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。 解说: 1.strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((strDest==NULL)||(strSrc==NULL)) //[1] throw "Invalid argument(s)"; //[2] char * strDestCopy=strDe 阅读全文
posted @ 2011-01-15 17:01 李sir 阅读(1266) 评论(0) 推荐(0) 编辑
面试题
摘要:(1)统计字符串中出现的子字符串数量#include "stdafx.h"void findcount(char* s1,char *s2);void findcount(char* s1,char *s2){ char * str1 = s1; char * str2 = s2; int count=0; while (*str1!='\0') { if (*str1==*str2&&*str1!='\0'&&*str2!='\0') { str1++; str2++; } else { str2= s2; str1++; } if (*str2=='\0') { count++; str2 阅读全文
posted @ 2011-01-15 15:57 李sir 阅读(351) 评论(0) 推荐(0) 编辑
深入浅出Win32多线程程序设计之线程通信
摘要:简介 线程之间通信的两个基本问题是互斥和同步。 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。 线程互斥是一种特殊的线程同步。 实际上,互斥和同步对应着线程间通信发生的两种情况: (1)当有多个线程访问共享资源而 阅读全文
posted @ 2011-01-13 19:17 李sir 阅读(383) 评论(0) 推荐(0) 编辑
深入浅出Win32多线程之Mfc(2)
摘要:4. MFC线程、消息队列与MFC程序的"生死因果" 分析MFC程序的主线程启动及消息队列处理的过程将有助于我们进一步理解UI线程与消息队列的关系,为此我们需要简单地叙述一下MFC程序的"生死因果"(侯捷:《深入浅出MFC》)。 使用VC++ 6.0的向导完成一个最简单的单文档架构MFC应用程序MFCThread: (1) 输入MFC EXE工程名MFCThread; (2) 选择单文档架构,不支持Document/View结构; (3) ActiveX、3D container等其他选项都选择无。 我们来分析这个工程。下面是产生的核心源代码: MFCThread.h 文件clas 阅读全文
posted @ 2011-01-13 19:12 李sir 阅读(362) 评论(0) 推荐(0) 编辑
深入浅出Win32多线程设计之MFC的多线程(1)
摘要:、创建和终止线程 在MFC程序中创建一个线程,宜调用AfxBeginThread函数。该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程。 工作者线程CWinThread *AfxBeginThread( AFX_THREADPROC pfnThreadProc, //控制函数 LPVOID pParam, //传递给控制函数的参数 int nPriority = THREAD_PRIORITY_NORMAL, //线程的优先级 UINT nStackSize = 0, //线程的堆栈大小 DWORD dwCreateFlags = 0, //线程的创建标志 LP 阅读全文
posted @ 2011-01-13 19:01 李sir 阅读(461) 评论(0) 推荐(0) 编辑
计算机英语翻译
摘要:www.en37.com37英语学习网第一章 1.By using various coding techniques, groups of bits can be made to represent not only binary numbers but also other discrete symbols, such as decimal digits or letters of the alphabet. 应用多种编码技术,一组二进制数字不但可以表示二进制数据,而且还可以表示其它的离散符号,如十进制数字或字母表中的字母。 2.System software includes 阅读全文
posted @ 2011-01-10 13:20 李sir 阅读(701) 评论(0) 推荐(0) 编辑
C++的Static关键字(转载)
摘要:昨天遇到类内静态函数,本想自己整理下,谁知道已经有人整理的很好了,为此就不麻烦了,看了一篇就转贴在自己空间里,以便以后查询。C++的static关键字作者:韩耀旭C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include iostream.hvoid fn();static in 阅读全文
posted @ 2011-01-04 14:03 李sir 阅读(173) 评论(0) 推荐(0) 编辑
C与C++ Static函数的区别
摘要:c与c++ static函数的区别static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, register(C语言程序设计(第二版)谭浩强, 第174-175页)与auto类型(普通)局部变量相比, static局部变量有三点不同1. 存储空间分配不同auto类型分 阅读全文
posted @ 2011-01-04 13:35 李sir 阅读(424) 评论(0) 推荐(0) 编辑
C/C++中Const用法总结
摘要:const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化*************************cons的作用 (1)可以定义const常量 例如: const int Max=100; int Array[Max]; (2)便于进行类型检查 例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改; (3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如: void f(const in 阅读全文
posted @ 2011-01-04 13:03 李sir 阅读(180) 评论(0) 推荐(0) 编辑
C++ Const引用详解
摘要:(1) 在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用。1 int ival = 1092;2 int &re = ival; //ok3 int &re2 = &ival; //错误4 int *pi = &ival;5 int *&pi2 = pi; //ok(2) 一旦引用已经定义,它就不能再指向其他的对象.这就是为什么它要被初始化的原因。(3) const引用可以用不同类型的对象初始化(只要能从一种类型转换到另一种类型即可),也可以是不可寻址的值,如文字常量。例如double d 阅读全文
posted @ 2011-01-04 11:23 李sir 阅读(19054) 评论(0) 推荐(1) 编辑
在VC中编译、运行程序的小知识点
摘要:1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。C ... 阅读全文
posted @ 2010-11-24 17:05 李sir 阅读(257) 评论(0) 推荐(0) 编辑
Windows编程中的堆管理
摘要:摘要: 本文主要对Windows内存管理中的堆管理技术进行讨论,并简要介绍了堆的创建、内存块的分配与再分配、堆的撤销以及new和delete操作符的使用等内容。关键词: 堆;堆管理 1 引言 在大多数Windows应用程序设计中,都几乎不可避免的要对内存进行操作和管理。在进行大尺寸内存的动态分配时尤其显的重要。本文即主要对内存管理中的堆管理技术进行论述。 堆(Heap)实际是位于保留的虚拟... 阅读全文
posted @ 2010-11-24 16:25 李sir 阅读(329) 评论(0) 推荐(0) 编辑
Windows操作系统堆和栈的区别
摘要:堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(... 阅读全文
posted @ 2010-11-24 16:23 李sir 阅读(2535) 评论(0) 推荐(0) 编辑
Typedef Struct 用法详解和用法小结
摘要:第一篇:typedef struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个... 阅读全文
posted @ 2010-11-24 16:22 李sir 阅读(43383) 评论(4) 推荐(2) 编辑
使用__FILE__和__LINE__定位错误
摘要:[前言:使用__FILE__和__LINE__来定位错误已经屡见不鲜,然而其中一些道理又有几个人仔细探究过。本文参考了Curtis Krauskopf的一篇名为Using __FILE__ and __LINE__ to Report Errors的文章,希望达到解惑之效。]问题:当运行时错误产生时,我怎样才能得到包含C++文件名和行号的字符串信息?回答:在C++中的__FILE__预编译指示器包... 阅读全文
posted @ 2010-11-24 16:05 李sir 阅读(16524) 评论(4) 推荐(2) 编辑
Extern 用法小结
摘要:1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗?3 问题:extern函数1 常常见... 阅读全文
posted @ 2010-11-24 16:00 李sir 阅读(398) 评论(0) 推荐(0) 编辑
Static_cast 和 Reinterpret_cast的区别以及Dynamic_cast
摘要:大多程序员在学C++前都学过C,并且习惯于C风格(类型)转换。当写 C++(程序)时,有时候我们在使用static_cast<>和reinterpret_cast<>时可能会有点模糊。在本 文中,我将说明static_cast<>实际上做了什么,并且指出一些将会导致错误的情况。泛型(Generic Types) float f = 12.3; float* pf... 阅读全文
posted @ 2010-11-24 15:49 李sir 阅读(532) 评论(0) 推荐(0) 编辑
C++中Extern “C”含义深层探索
摘要:1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程 式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支 持函数... 阅读全文
posted @ 2010-11-24 14:06 李sir 阅读(167) 评论(0) 推荐(0) 编辑
常对象与常成员函数的关系
摘要:(1) 常对象用const修饰的对象叫对象常量,其格式如下:〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。例:分析下列错误的地方,说明理由;#include
posted @ 2010-11-24 14:02 李sir 阅读(1977) 评论(0) 推荐(0) 编辑
关于内存中栈和堆的区别
摘要:1、内存分配方面: 堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、申请方式方面: 堆:需要程序员自己申请,并指明大小。在c中mal... 阅读全文
posted @ 2010-11-24 13:58 李sir 阅读(299) 评论(0) 推荐(0) 编辑
数组指针与指针数组
摘要:数组指针 为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针?如何定义? 答案与分析: 使用指针,目的是用来保存某个元素的地址,从而来利用指针独有的优点,那么在元素需要是数组的情况下,就理所当然要用到指向数组的指针,比如在高维需要动态生成情况下的多维数组。 定义例子如下: int (*pElement)[2]。 下面是一个例子: int array[2][3] = { {1,2,... 阅读全文
posted @ 2010-11-22 16:19 李sir 阅读(546) 评论(0) 推荐(0) 编辑
几道笔试面试题
摘要:3. 以下两条输出语句分别输出什么?[C++难]float a = 1.0f;cout << (int)a << endl;cout << (int&)a << endl;cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?floa... 阅读全文
posted @ 2010-11-22 10:16 李sir 阅读(539) 评论(0) 推荐(0) 编辑
面试题
摘要:精选微软等数据结构+算法面试100题,整的一大半了,虽还只公布到第60题,但整天 看代码,也实在 趣味不多。详情见此帖:http://topic.csdn.net/u/20101023/20/5652ccd7-d510-4c10-9671-307a56006e6d.html整理资源,下载地址:[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案]http://download... 阅读全文
posted @ 2010-11-17 12:39 李sir 阅读(377) 评论(0) 推荐(0) 编辑
面试题目集合
摘要:http://blog.csdn.net/delphihero/archive/2006/05/11/725340.aspx 阅读全文
posted @ 2010-10-19 14:55 李sir 阅读(631) 评论(0) 推荐(0) 编辑