01
2021
03

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

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

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

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

计算一颗二叉树的深度

深度的计算函数:int depth(BiTree T) {  if(!T) return 0;   //判断当前结点是否为叶子结点  int d1= depth(T->lchild);   //求当前结点的左孩子树的深度  int d2= depth(T->rchild);   //求当前结点的右孩子树的深度 } return (d1>
01
2021
03

面向对象的特征并简述

包括四大基本特征和五大基本原则。特征:抽象、继承、多态、封装1.抽象忽略一个主题中与当前目标无关的东西,专注的注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口).抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一个数据抽象,而是过程抽象.数据抽象 -->表示世界中一类事物的特征,就是对象的属性.比如鸟有翅膀,羽毛等(类的属性)过程抽象 -->表示世界中一类事物的行为,就是对象的行为.比
01
2021
03

函数和多态的实现

函数实现:函数具体运算过程函数声明:说明函数参数、返回类型、调用方法。多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样,通过父类指针调用子类的函数,可以让父类指针有多种形态。每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。虚函数调用编译器只知道pb是B类型的指针,并不知道它指向的具体对象类型 :pb可能指向的是B的对象,也可能指向的是D的对象。但对于pb->bar
02
2020
04

宏定义的用法,看下面这个程序,求出结果

#include <stdio.h>#define S(a,b) a*b int main(void){int n = 3;int m = 5;printf("%d",S(n+m,m+n)); return 0;}这道题容易出现的错误结果是64,得到这个结果肯定是这样理解的(3+5)*(5+3)。其实并不是,大家要理解宏定义的概念,宏定义只是简单的符号替换,而不做其他处理,所以这里得到的结果是 3+5*5+3=31.大家看看运行结果:fs@
02
2020
04

a=3,b=5,不用第三变量temp,对a和b的值进行交换

如果有第三者temp,a和b交换非常方便:temp = a;a = b;b =temp;若无temp,可以这样做:a = a + b;b = a - b;a = a - b;当然,我们可以利用C语言的位运算符:a = 3;b = 5;a ^= b;b ^= a;a ^= b;原理是a ^ b ^ b == a; a ^ b == b ^ a;
02
2020
04

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

给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清a的bit 3,在以上两个操作中,要保持其他位不变。笔者认为,在对ARM寄存器操作时会经常用到这一块,所以要注意这块:#define BIT3 (0x1 << 3 ) Satic int a;//设置a的bit 3: void set_bit3( void ) {       a |= BIT3; //将a第3位置1 }//清a的bit 3 
02
2020
04

用C编写一个死循环程序

while(){}其实还有for(;;)说明:很多种途径都可实现同一种功能,但是不同的方法时间和空间占用度不同,特别是对于嵌入式软件,处理器速度比较慢,存储空间较小,所以时间和空间优势是选择各种方法的首要考虑条件。
02
2020
04

extern有什么作用

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