C/C++ 常见1000道面试题( 39 )

您所在的位置:网站首页 c语言产生时间随机数 C/C++ 常见1000道面试题( 39 )

C/C++ 常见1000道面试题( 39 )

#C/C++ 常见1000道面试题( 39 )| 来源: 网络整理| 查看: 265

221.回调函数的作用

1)当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数;2)回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于系统调用;3)回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数;4)因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。

222.随机数的生成

1)#include srand((unsigned)time(NULL)); cout

224.请简述#ifdef、#else、#endif、和#ifndef的作用是?

利用#ifdef、#endif将某程序功能模块包括进去,以向特定用户提供该功能,在不需要时,用户可以轻易将其屏蔽;

在子程序上加上标记,以便于追踪和调试;

应对硬件的限制,由于一些具体应用环境的硬件不一样,限于条件,本地缺乏某种设备,只能绕过硬件,直接写出预期结果。

注意:虽然不用条件编译命令而直接用if语句也能到达要求,但是这样做的话,目标程序长(所有的语句都需要编译),运行时间长(在程序运行时会对if语句进行测试),采用条件编译,可以减少被编译的语句,减少目标程序的长度,减少程序的运行时间。

225.请写出int、bool、float、指针变量与”零值”比较的if语句?

226.结构体是否可以直接赋值?

声明时可以直接初始化,同一结构体的不同对象之间也可以直接赋值,但是当结构体中含有指针成员时一定要小心。

注意:当有多个指针指向同一段内存时,某个指针释放这段内存可能会导致其它指针的非法操作,因此在释放前一定要确保其它指针不再使用这段内存空间。

227.sizeof和strlen的区别?sizeof是一个操作符,strlen是库函数;sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为’\0’的字符串作为参数;编译器在编译时就计算出了sizeof的结果,而strlen函数必须在程序运行时才能计算出来,并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际占用的内存大小;数组做sizeof的参数不退化,数组传递给strlen就退化为指针了。228.C语言和C++语言中的关键字static有什么区别?

在C语言中static用来修饰局部静态变量和外部静态变量、函数,而C++中的static关键字除了具有上述功能外,还能用来定义类的成员变量和函数,也就是静态成员和静态成员函数。

注意:编程时static的记忆性和全局性特点可以让在不同时期调用的函数进行通信、传递信息,而C++的静态成员则可以在多个对象实例间进行通信、传递信息。

229.C语言的malloc和C++中的new有什么区别?new和delete是操作符,可以重载,只能在C++中使用;malloc和free是函数,可以覆盖,C和C++都能使用;new可以调用对象的构造函数,对应的delete调用对象的析构函数;malloc仅仅分配内存,free则是回收内存,并不会执行构造函数和析构函数;new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。

注意:malloc申请的内存空间要使用free进行释放,而new申请的内存空间要使用delete释放,不能够混用。

230.请写一个标准宏MIN?

#define min(a, b) ((a)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3