笔试知识总结

1970-01-01 08:00

enum{A, B, C = 1, D}; cout<

19.如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

答案: #ifdef __cplusplus cout<<\#else cout<<\#endif

13. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面] 答:

void* mymemcpy( void *dest, const void *src, size_t count ) {

char* pdest = static_cast( dest ); const char* psrc = static_cast( src );

if( pdest>psrc && pdest

for( size_t i=count-1; i!=-1; --I ) pdest[i] = psrc[i]; } else {

for( size_t i=0; i

return dest; }

int main( void ) {

char str[] = \ mymemcpy( str+1, str+0, 9 ); cout << str << endl;

system( \ return 0; }

unsigned int a = 0x23456789;

printf(\(unsigned char *)(&a)指的是将a的unsigned int转换成 unsigned char类型,既是在内存中int是以4字节为标准,截断3字节剩下最后那一个字节的数据(89)内容作为转换后的结果,+1指的是剩下来的是字节的偏移量,这个时候数据内容指向数据(56)了。

4、下面代码的输出是什么?

1. float a = 1.0f;

2. cout<< (int)a <

4. cout << boolalpha << ( (int)a==(int&)a ) << endl; // 输出什么? 5.

6. float b = 0.0f; 7. cout<< (int)b <

9. cout << boolalpha << ( (int)b==(int&)b ) << endl; // 输出什么?

浮点数的 1.0f 在内存里是这样表示的:

0011 1111 1000 0000 00000000 00000000 这个32位二进制数被当作整数输出就是: 1065353216

而整数的 1 在内存里是这样表示的:

0000 0000 0000 0000 00000000 00000001 所以 (int)a != (int&)a

浮点的0和整数的0 在内存里都是:

0000 0000 0000 0000 00000000 00000000 所以 (int)b == (int&)b

分别输出false和true。注意转换的应用。(int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是,(int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换)。因为以整数形式存放和以浮点形式存放其内存数据是不一样的,因此两者不等。对b的两种转换意义同上,但是的整数形式和浮点形式其内存数据是一样的,因此在这种特殊情形下,两者相等(仅仅在数值意义上)

内存管理是操作系统中的重要部分,两三句话恐怕谁也说不清楚吧~~

当程序运行时需要从内存中读出这段程序的代码。代码的位置必须在物理内存中才能被运行,由于现在的操作系统中有非常多的程序运行着,内存中不能够完全放下,所以引出了虚拟内存的概念。把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内存)中。这个就是内存管理所要做的事。内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。 内存管理有块式管理,页式管理,段式和段页式管理。现在常用段页式管理

块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主存时就分配一块主存空间,把程 序片断load入主存,就算所需的程序片度只有几个字节也只能把这一块分配给它。这样会造成很大的浪费,平均浪费了50%的内存空间,但时易于管理。

页式管理:把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方法的空间利用率要比块式管理高很多。

段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另外一个缺点。一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一段的物理地址上(计算机最耗时间的大家都知道是I/O吧)。

段页式管理:结合了段式管理和页式管理的优点。把主存分为若干页,每一页又分为若干段。好处就很明显,不用我多说了吧。

交换两个参数值的宏定义为:. #define SWAP(a,b) (a)=(a)+(b);(b)=(a)-(b);(a)=(a)-(b); c = a+++b;等价于c = (a++) + b;

三元表达式“?:”问号后面的两个操作数必须为同一类型。

13. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等] 答:

a. class B : public A { ??} // B公有继承自A,可以是间接继承的 b. class B { operator A( ); } // B实现了隐式转化为A的转化

c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数 d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个

16.类成员函数的重载、覆盖和隐藏区别?

答案:a.成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同;

(4)virtual 关键字可有可无。

b.覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同;

(4)基类函数必须有virtual 关键字。

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

Set,map属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可。Set和vector的区别在于set不包含重复的数据。set和map的区别在于set只含有key。map和hash_map的区别是hash_map使用了hash算法来提高查找过程,但是需要更多的内存来存放这些hash桶元素,因为使用的是采用空间来换取时间策略

var2[va1++] = ++va1;

先执行右边的++val,再执行左边val++。int var[4] = {1, 2, 3, 4};int val=1;执行完后的结果值为var = [1, 2, 2, 4];var[2] = 2;

所谓的定义就是编译器创建一个对象,为这个对象分配一块内存并给它取上一个名字。声明就是告诉编译器这个名字已经匹配到一块内存上了,这个名字已被预定了,别的地方再也不能用它来作为变量名或对象名。register这个关键字请求编译器尽可能地将变量存在cpu内部寄存器中,提高访问效率,register变量可能不存放在内存中,所以不能用取地址运算符&来获取register变量的地址。

重载与覆盖的区别

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

1.如果class A没有成员,那么n=1;

这个是有历史原因的。理由是n=1是为了说明不同的对象在内存中的地址是不同的。

面向对象三个基本元素:1、封装 2、继承 3、多态 。五个原则:1、单一职责原则2、开放封装原则3、LISKOV替换原则4、依赖倒置原则5、接口隔离原则

typedef union {

long i;

int k[5];//20 char j; } DATEs;

cout<

struct data {

int cat;//4 DATEs cow;//20 double dog;//8 } too;

cout<

C中printf计算参数时是从右到左压栈的,所以会先计算printf函数中的右边的参数 *(ptr++) += 123 ===(等价) *ptr = *ptr + 123; ptr++;

存储过程和函数的区别:

存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。


笔试知识总结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版小学数学四年级上册应用题专项练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: