01
2021
03

extern 有什么作用

extern 标识的变量或者函数声明其定义在别的文件中,提示编译器遇到此变量和函数时在其它模块中寻找其定义。
01
2021
03

static 有什么作用

static 在 C 中主要用于定义全局静态变量、定义局部静态变量、定义静态函数。在 C++中新增了两种作用:定义静态数据成员、静态函数成员。注意:因为 static 定义的变量分配在静态区,所以其定义的变量的默认值为 0,普通变量的默认值为随机数,在定义指针变量时要特别注意。
01
2021
03

关键字 const 是什么

const 用来定义一个只读的变量或对象。主要优点:便于类型检查、同宏定义一样可以方便地进行参数的修改和调整、节省空间,避免不必要的内存分配、可为函数重载提供参考。说明:const 修饰函数参数,是一种编程规范的要求,便于阅读,一看即知这个参数不能被改变,实现时不易出错。 const修饰成员函数不可修改成员变量。
01
2021
03

typedef 和 define 有什么区别

(1) 用法不同:typedef 用来定义一种数据类型的别名,增强程序的可读性。define 主要用来定义常量,以及书写复杂使用频繁的宏。(2) 执行时间不同:typedef 是编译过程的一部分,有类型检查的功能。define 是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。(3) 作用域不同:typedef 有作用域限定。define 不受作用域约束,只要是在 define 声明后的引用都是正确的。(4) 对指针的操作不同:typedef 和 defi
01
2021
03

写一个“标准”宏 MIN

写一个“标准”宏 MIN,这个宏输入两个参数并且返回较小的一个。【答案】#define min(a,b)((a)<=(b)?(a):(b))注意:在调用时一定要注意这个宏定义的副作用,如下调用:((++*p)<=(x)?(++*p):(x)。p 指针就自加了两次,违背了 MIN 的本意。
01
2021
03

在二元树中找出和为某一值的所有路径

输入一个整数和一棵二元树。从树的根结点开始往下访问,一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如,输入整数 9 和如下二元树:则打印出两条路径:3,6 和 3,2,4。【答案】typedef struct path {   BiTNode* tree;   //结点数据成员   struct path* next;    }PATH,*pPath;
01
2021
03

C++的引用和 C 语言的指针有什么区别

指针和引用主要有以下区别:(1) 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。(2) 引用初始化以后不能被改变,指针可以改变所指的对象。(3) 不存在指向空值的引用,但是存在指向空值的指针。注意:引用作为函数参数时,会引发一定的问题,因为让引用作参数,目的就是想改变这个引用所指向地址的内容,而函数调用时传入的是实参,看不出函数的参数是正常变量,还是引用,因此可能会引发错误。所以使用时一定要小心谨慎。
01
2021
03

&&和&、||和|有什么区别

(1)&和|对操作数进行求值运算,&&和||只是判断逻辑关系。(2)&&和||在在判断左侧操作数就能确定结果的情况下就不再对右侧操作数求值。注意:在编程的时候有些时候将&&或||替换成&或|没有出错,但是其逻辑是错误的,可能会导致不可预想的后果(比如当两个操作数一个是 1 另一个是 2 时。
01
2021
03

short i = 0; i = i + 1L;这两句有错吗

代码一是错的,代码二是正确的。说明:在数据安全的情况下大类型的数据向小类型的数据转换一定要显示的强制类型转换。
01
2021
03

谈谈你对编程规范的理解或认识

编程规范可总结为:程序的可行性,可读性、可移植性以及可测试性。说明:这是编程规范的总纲目,面试者不一定要去背诵上面给出的那几个例子,应该去理解这几个例子说明的问题,想一想,自己如何解决可行性、可读性、可移植性以及可测试性这几个问题,结合以上几个例子和自己平时的编程习惯来回答这个问题。