
C/C++
jacson8408
寻得本性,自得其乐
展开
-
CLR(common language runtime)
CLR是什么?上次讲到运行在.NET Framework中的代码叫做managed code,反之叫做unmanaged code。相比unmanaged code,managed code 有很多好处,比如可以用多种编程语言编写、提高安全性、易于版本控制和程序发布等等。这些都是由CLR提供的。但也有一些不利点,最容易想到的就是代码运行速度问题了。要为managed code提供以转载 2012-05-02 10:38:49 · 175 阅读 · 0 评论 -
Strlen与Sizeof 的10点总结
(1)sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。(2)sizeof是运算符,strlen是函数。(3)sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。(4)sizeof还可以用函数做参数,而strlen不可以shor原创 2012-06-03 21:57:25 · 262 阅读 · 0 评论 -
说说C&C++中的Extern关键字
讲解Extern关键字的这篇文章,主要分成四个部分,ExternExtern "C",举例Extern "C"使用技巧Extern 关键字的作用extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明转载 2012-05-28 11:38:18 · 277 阅读 · 0 评论 -
堆和栈的区别
本文内容来自网络,写得很好,无数次被转载1.申请方式不同Stack由系统自动分配,而heap需要程序员自己申请,并指明大小。2. 申请后系统的响应不同Stack:只要栈的剩余空间大于申请空间,系统就为程序提供内存,否则将抛出栈溢出异常Heap:当系统收到程序申请时,先遍历操作系统中记录空闲内存地址的链表,寻找第一个大于所申请空间的堆结转载 2012-06-05 08:46:36 · 570 阅读 · 0 评论 -
C++中构造函数初始化列表的应用
本文转自http://www.cnblogs.com/BlueTzar/articles/1223169.html1.什么是构造函数初始化列表?构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public: int a; float b;转载 2012-06-06 01:21:45 · 408 阅读 · 0 评论 -
详解Const关键字
const修饰普通变量和指针const修饰变量,一般有两种写法:这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。const TYPE value;TYPE const value;对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。例如const int nValue; //nValue是转载 2012-06-03 18:45:28 · 207 阅读 · 0 评论 -
C++中的隐式类型转换规则
文章内容来自《程序员面试宝典》第二版39页扩展知识1.混合型类型的算术表达式中目标转换类型:最宽的数据类型为2.用一种类型的表达式赋值给另一种类型的对象目标转换类型:被赋值对象的类型3.把一个表达式传递给一个函数,且表达式的类型与函数的形式参数的类型不相同目标转换类型:形式参数的类型4.从一个函数返回一个表达式的类型与返回类型转载 2012-06-05 08:32:31 · 331 阅读 · 0 评论 -
虚函数和虚继承
本文转自 http://hi.baidu.com/haiksn/blog/item/2c4b2ccba290a119bf09e63b.html 以及陈皓的博客 http://blog.youkuaiyun.com/haoel/article/details/1948051#多态性:基类指针可以指向派生类对象,在函数调用时,可以通过基类指针调用派生类的成员函数,从而使基类指针转载 2012-06-06 21:47:21 · 377 阅读 · 0 评论 -
ISR 中断服务子程序的几个特点
中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是ISR不能有返回值;ISR不能传递参数;ISR应该是短而高效的,在ISR中做浮点运算是不明智的;ISR中不应该有重入和性能上的问题,因此不应该使用pintf()函数。但是从网上大家的讨论看,有的时候ISR并不见得满足以上4个条件,比如有网友提出wince的ISR,OEMIn转载 2012-06-07 14:32:42 · 2965 阅读 · 1 评论 -
计算机的大端和小端字节存储顺序(big endian & little endian)
1.大小端存储顺序概念介绍大端法:存储内容的高位放在低地址,低位放在高地址,例如对于0x12345678这个数存储在内存中起始地址为0x40000000的位置时内存地址存储内容0x400000000x780x400000010x560x400000020x340x40000003原创 2012-06-07 18:53:45 · 1416 阅读 · 0 评论 -
C++中的4种强制类型转换
转自http://www.cnblogs.com/alexqdh/archive/2011/06/09/2075713.html1.C++有几种强制类型转换?分别是什么?C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast2.为什么使用转载 2012-06-07 14:01:32 · 897 阅读 · 0 评论 -
COM的几个概念问题
本文转载自程序员面试宝典第二版COM组件部分1.COM是什么?它是一种接口么?Components Object Model: COM不是接口,也不是对象,它是一种标准2.什么是COM对象符合COM标准的就是COM对象,其实COM对象无非就是实现了很多接口的对象而已3.COM对象中的Iunknown接口有什么作用?COM对象必须实现I转载 2012-06-07 12:23:17 · 261 阅读 · 0 评论 -
同步和异步(含程序执行时的同步异步以及网络通讯时的同步异步)
本文主要摘自百度文库网友贡献的文档1.服务器端和客户端的服务请求的同步异步同步:提交请求->等待服务器处理->处理完毕->返回 这个期间客户端不能干任何事异步:请求通过事件触发->服务器处理(这时客户端仍然可以做其它事情)->处理完毕例子:打电话是同步,发电报是异步2.软件执行级别的同步异步同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是转载 2012-06-08 15:05:14 · 438 阅读 · 0 评论 -
C++中的mutable是什么意思
mutable的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数转载 2012-06-06 01:04:00 · 1248 阅读 · 0 评论 -
复杂类型定义
指针的几种典型应用情况int *p[n];--------指针数组,每个元素均为指向整型数据的指针。int (*)p[n];------p 为指向一维数组的指针,这个一维数组有 n 个整型数据。int *p();---------函数带回指针,指针指向返回的值。int (*)p();-------p为指向函数的指针。从上可看出,只要*号加了括号,那么p就是指针类型,否则原创 2012-06-11 23:12:37 · 331 阅读 · 0 评论 -
UML基础之10种图
UML是什么?unified modeling language• 模型是对现实的简化。模式提供了系统的蓝图,从高的层次考虑系统的总体计划• 建模是为了能够更好的理解我们正在开发的系统,因为我们不能很好的理解一个复杂的系统,所以我们要建模• 1997年 OMG(Object managementgroup)发布了UML(Unified Model转载 2012-05-09 08:20:16 · 372 阅读 · 0 评论 -
C和C++中的Struct区别
C和C++中的Struct区别主要体现在以下几个方面C中的struct是没有权限设置的C++中struct增加了访问权限,且可以和类一样有成员函数C++中的struct等同于class,只是class默认成员权限是private,而struct默认成员权限是public。且class的默认继承为私有继承,struct的默认继承为公有继承。比较有意思的一点是:C语言中的struct中不能转载 2012-06-03 21:33:13 · 264 阅读 · 0 评论 -
详解Volatile关键字
volatile应用场景volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写转载 2012-06-03 21:19:21 · 210 阅读 · 0 评论 -
详解C++中的static关键字
C++的static有两种用法面向过程程序设计中的static,主要应用于普通变量和函数,不涉及类面向对象程序设计中的static。主要是其在类中的作用。面向过程设计中的static静态全局变量:在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。例如:static int n; 静态全局变量他有如下特点该变量在全局数据区分配内存;未经初始化的静态转载 2012-06-03 16:45:35 · 203 阅读 · 0 评论 -
简要说说引用作为函数返回值的类型的好处
格式及好处格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!注意事项不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部转载 2012-05-01 22:57:55 · 335 阅读 · 0 评论 -
数组名和指针异同
数组名是不是指针?数组名不完全是指针数组名到底是什么?数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址!数组名指代一种数据结构:数组,其实C++语法如果能够像下面这样定义数组,那么对于数组的理解我们转载 2012-05-07 11:43:26 · 170 阅读 · 0 评论 -
C++引用详解
引用是什么?引用就是一个变量的别名引用的定义int b; int & a=b; 这里表明的是a是一个指向int类型变量的引用,也就是说a是b的一个别名。引用在哪些地方使用?引用最常使用的地方是用做函数的参数函数调用时使用引用的话,函数使用的就是该变量,而不是该变量的一份拷贝使用引用的注意事项引用在定义或者声明的时候就需要给他赋值引用不能作为数转载 2012-05-08 23:08:58 · 311 阅读 · 0 评论 -
浅析C语言的可变参数问题
一、是什么我们学习C语言时最经常使用printf()函数,但我们很少了解其原型。其实printf()的参数就是可变参数,想想看,我们可以利用它打印出各种类型的数据。下面我们来看看它的原型:int printf( const char* format, ...);它的第一个参数是format,属于固定参数,后面跟的参数的个数和类型都是可变的(用三个点“…”做参数占位符),实际调用时可以有转载 2012-05-09 10:25:41 · 174 阅读 · 0 评论 -
回顾一下原码,补码和反码
原码:是一个数字的二进制码表示补码:正数的补码与原码相同负数的补码按照如下规则进行转换保持符号位不变原码各位取反加1反码:正数的反码与源码一样负数的反码按照如下规则进行转换保持符号位不变原码各位取反注:补码原码的转换补码转原码和原码转补码的方法一样保持符号位不变补码各位取反加1转载 2012-05-07 10:51:48 · 196 阅读 · 0 评论 -
简析容器
容器是什么?在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。说明:很简单,容器就是保存其它对象的对象,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,容器类是一种对特定代码重用问题的良好的解决方案容器的特点:自行扩展:在解决问题时我们常常不知道我们需要存储多少个对象,也就是说转载 2012-05-09 07:44:08 · 207 阅读 · 0 评论 -
C&C++面试题之一(每次10题)
最近离职了准备找工作,在网上找了一下C/C++的面试题,看完之后贴在这里整理记录一下【Cisco】那么为什么Delete P[]不需要知道大小?你有什么好的编程实践能让我们有效的进行内存管理。就释放内存来说,编译器是根据指针地址知道某块内存大小的,因为在申请的时候,内存管理器记录了这个地址开始的申请内存的大小delete和delete[]的差别只有在数组元素是一个个的对象时,才可以原创 2012-05-27 13:10:51 · 1365 阅读 · 0 评论 -
C&C++面试题之六(每次10题)
什么是预编译,何时需要预编译?总是使用不经常改动的大型代码体。程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。阅读下面的代码,回答问题char * const p; char const * p const char *p 上述三个有什么区别? 回答:char * const p原创 2012-05-28 14:59:52 · 372 阅读 · 0 评论 -
怎么理解C++中临时对象都是const类型的
以如下代码为例说明struct A{};struct B{ public: B(){} B(A& a){}};struct B1 : public B{ public: B1(const B& b) : B(b) { }};int转载 2012-05-01 22:48:35 · 279 阅读 · 0 评论 -
C&C++面试题之二(每次10题)
介绍一下STL,详细说明STL如何实现vectorSTL (标准模版库,Standard Template Library)它由容器算法迭代器组成。STL有以下的一些优点: 可以方便容易地实现搜索数据或对数据排序等一系列的算法调试程序时更加安全和方便即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨平台的)。vector实质上就是一个动态数组,会根据数据原创 2012-05-27 14:38:36 · 683 阅读 · 0 评论 -
C&C++面试题之三(每次10题)
说说框架与设计模式的区别设计模式和框架针对的问题域不同.设计模式针对面向对象的问题域;框架针对特定业务的问题域设计模式比框架更为抽象.设计模式在碰到具体问题后,才能产生代码;框架已经可以用代码表示设计模式是比框架更小的体系结构元素.框架中可以包括多个设计模式设计模式就像武术中基本的招式.将这些招式合理地纵组合起来,就形成套路(框架),框架是一种半成品.C++和C定义结构原创 2012-05-28 06:01:36 · 765 阅读 · 0 评论 -
C++中多重继承在内存中的存储模型
请描述一下多重继承在内存中的存储模型普通类在内存中的存储情况 VTAB( Data如果一个类有虚函数,那么它就有虚函数表,类的第一个单元是一个指针,指向这个虚函数表如果一个类没有虚函数,他的祖先(所有父类)均没有虚函数,那么它的内存映像和C语言里的结构一样如果类Y是是类X的一个继承(X是父类),那么类Y在内转载 2012-05-28 06:23:03 · 739 阅读 · 0 评论 -
C&C++面试题之四(每次10题)
简单描述一下虚继承和虚基类概念struct CSubClass : public virtual CBase {};其中CBase称之为CSubClass的虚基类,而不是说CBase就是个虚基类,因为CBase还可以不不是虚继承体系中的基类。C++中,virtual的意义和它的英语本意是一样的,也就是它所修饰的东西本质上是存在的,但是没有直观的形式表现。不可以在语言模型中直接调用或体现的,原创 2012-05-28 06:39:30 · 574 阅读 · 1 评论 -
C&C++面试题之五(每次10题)
结构与联合有和区别?结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的求关于“联合”的题目的输出?#include union {原创 2012-05-28 10:34:03 · 376 阅读 · 0 评论 -
位操作实现加法
用位操作进行加法运算,主要思想是将加法的计算结果分解为两部分:第一是不考虑进位的运算结果,第二是进位,然后再将这两者相加,即得到结果。详细表述如下:以一位二进制数为例,不考虑进位的情况1+1=01+0=10+1=10+0=0这个过程与使用异或位运算符的效果是一样的1^1=01^0=10^1=10^0=0a^b表示不考虑进位的计算结果。转载 2012-05-14 05:15:18 · 822 阅读 · 0 评论