2.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在栈。
3.堆栈溢出一般是由什么原因导致的?
堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。
没有回收垃圾资源导致的是内存泄露最后内存耗尽。
4.不能做switch()的参数类型是:实型。(只能是int,或者char)。
5.写出float x
与“零值”比较的if语句。
因为float的精度是小学点的后六位,所以正确的比较语句是:
if(x<0.000001&&x>-0.000001)
6.将一个字符转化成整形的函数及其原型。
atol();
函数原型。
long atol(const char *nptr);
7.对一个频繁使用的短小函数,在C中应该如何实现?在C&#43;&#43;中如何实现?
C中只能使用宏定义,c&#43;&#43;中可以使用inline。
8.软件测试都有哪些种类:
黑盒测试:针对系统功能的测试。
白盒测试:测试函数功能和函数接口。
9.确定模块的功能和模块的接口是在软件设计的哪个阶段完成?
{
软件设计的流程:
1)市场调研
2)需求分析
3)概要设计
4)详细设计
5)编码
6)测试
7)维护
}
答:确定模块的功能和模块的接口是在概要设计阶段完成的。
10.
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问p1&#43;5=? ;
p2&#43;5=? ;
上述题目考查char的长度和long的长度。char的长度为1,long的长度为8.
而p1是一个地址,*p1才代表地址存放的&#20540;。而地址是16进制。
所以地址&#43;5相当于地址的增加。0&#43;5*1=5;0&#43;5*4=20 = 014.
答:p1&#43;5=0x801005 ;
p2&#43;5=0x810014 ;
11.
请问下面程序有什么错误?
int a[60][250][1000],i,j,k;
for(k=0;k<1000;k&#43;&#43;)
for(j=0;j<250;j&#43;&#43;)
for(i=0;i<60;i&#43;&#43;)
a[i][j][k]=0;
把循环语句内外换一下
(编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会溢出,要作为全局变量)
12. unsigned char 0 到 255
#define Max_CB 500
void LmiQueryCSmd(Struct MSgCB * pmsg)
{
unsigned char ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum {
......;
}
死循环(unsigned char 0
到 255)
13.
以下是求一个数的平方的程序,请找出错误:
#define SQUARE(a)((a)*(a))
int a=5;
int b;
b=SQUARE(a&#43;&#43;);//a被加了2次 a=7,b=25