二十万字C/C++、嵌入式软开面试题全集宝典十

目录

1、 编码实现某一变量某位清0或置1

2、 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

3、 局部变量全局变量的问题?

4、 数组和指针的区别?

5、 C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?

6、 如何禁止自动生成拷贝构造函数?

7、 assert与NDEBUGE

8、 Debug和release的区别

9、 main函数有没有返回值

10、 写一个比较大小的模板函数

11、 c++怎么实现一个函数先于main函数运行

12、 成员函数里memset(this,0,sizeof(*this))会发生什么

13、 方法调用的原理(栈,汇编)

14、 MFC消息处理如何封装的?

15、 函数指针

16、 回调函数的作用

17、 随机数的生成

18、 for(;;)和while(true)的区别

19、 数据结构中的常见树结构

20、 什么是平衡二叉树


 

1、 编码实现某一变量某位清0或置1

#define BIT3 (0x1 << 3 ) Satic int a;
//设置a的bit 3:
void set_bit3( void )
{
      a |= BIT3; //将a第3位置1
}

//清a的bit 3
void set_bit3( void )
{
        a &= ~BIT3; //将a第3位清零
}

2、 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

BOOL : if ( !a ) or if(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)

无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。

3、 局部变量全局变量的问题?

1.局部会屏蔽全局。要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2.如何引用一个已经定义过的全局变量,可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3.全局变量可不可以定义在可被多个.C文件包含的头文件中,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。

4、 数组和指针的区别?

1、数组在内存中是连续存放的,开辟一块连续的内存空间;数组所占存储空间:sizeof(数组名);数组大小:sizeof(数组名)/sizeof(数组元素数据类型);

2、用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p所指的内存容量。

3、编译器为了简化对数组的支持,实际上是利用指针实现了对数组的支持。具体来说,就是将表达式中的数组元素引用转换为指针加偏移量的引用。

4、在向函数传递参数的时候,如果实参是一个数组,那用于接受的形参为对应的指针。也就是传递过去是数组的首地址而不是整个数组,能够提高效率;

5、在使用下标的时候,两者的用法相同,都是原地址加上下标值,不过数组的原地址就是数组首元素的地址是固定的,指针的原地址就不是固定的。

5、 C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?

1、将类定义为抽象基类或者将构造函数声明为private;(lsy注:考虑下单例模式的实现)

2、不允许类外部创建类对象,只能在类内部创建对象

6、 如何禁止自动生成拷贝构造函数?

1.为了阻止编译器默认生成拷贝构造函数和拷贝赋值函数,我们需要手动去重写这两个函数,某些情况下,为了避免调用拷贝构造函数和拷贝赋值函数,我们需要将他们设置成private,防止被调用。

2.类的成员函数和friend函数还是可以调用private函数,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子木呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值