设为首页 加入收藏

TOP

C语言面试题详解(1)
2014-11-23 19:01:32 来源: 作者: 【 】 浏览:28
Tags:语言 试题 详解

1.static有什么用途?

首先看看c程序的内存分布。

 [ i u v  v 4n  橼  数据库,局部变量在栈。

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++中如何实现?

C中只能使用宏定义,c++中可以使用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+5=? ;

p2+5=? ;

上述题目考查char的长度和long的长度。char的长度为1,long的长度为8.

而p1是一个地址,*p1才代表地址存放的值。而地址是16进制。

所以地址+5相当于地址的增加。0+5*1=5;0+5*4=20 = 014.

答:p1+5=0x801005 ;

p2+5=0x810014 ;


11.

请问下面程序有什么错误

int a[60][250][1000],i,j,k;

for(k=0;k<1000;k++)

for(j=0;j<250;j++)

for(i=0;i<60;i++)

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++);//a被加了2次 a=7,b=25




】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇libsvm代码阅读:关于extern C 下一篇C语言中级

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: