C语言面试题(经典全)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.static有什么用途?(请至少说明两种)
1)限制变量的作用域
2)设置变量的存储域(堆,主动分配内存也是堆)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在栈
6.堆栈溢出一般是由什么原因导致的?
堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。没有回收垃圾资源导致的是内存泄露最后内存耗尽。
20.不能做switch()的参数类型是:
switch的参数不能为实型。(只能是int char)
9.写出float x 与“零值”比较的if语句。
if(x<0.000001&&x>-0.000001)
3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?
函数名: atol
功能: 把字符串转换成长整型数
函数的原型: long atol(const char *nptr);
程序例:
#include
#include
int main(void)
{
long l;
char *str = "98765432";
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}
1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline
8.软件测试都有那些种类?
黑盒:针对系统功能的测试白合:测试函数功能,各函数接口
9.确定模块的功能和模块的接口是在软件设计的那个阶段完成的? 概要设计阶段
11.unsignedchar *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问p1+5=? ;
p2+5=? ;
答:p1+5=0x801005 ;
p2+5=0x810014 ;
1.请问下面程序有什么错误?
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;
把循环语句内外换一下
(编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会溢出,要作为全局变量)
2.#defineMax_CB 500
void LmiQueryCSmd(Struct MSgCB * pmsg)
{
unsigned char ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum { ......; } 死循环(unsigned char 0 到 255) 3.以下是求一个数的平方的程序,请找出错误: #define SQUARE(a)((a)*(a)) int a=5; int b; b=SQUARE(a++);//a被加了2次 a=7,b=25 2、有一个16位的整数,每4位为一个数,写函数求他们的和。 解释: 整数1101010110110111 和 1101+0101+1011+0111 /* n就是16位的数,函数返回它的四个部分之和 */ char SumOfQuaters(unsigned short n) { charc = 0; inti = 4; do { c += n & 15; n = n >> 4; }while (--i); return c; } 3、两个字符串,s,t;把t字符串接到s字符串尾,s字符串有足够的空间存放t字符串 void connect(char *s, char *t, int i) { char *q = t; char *p =s; if(q ==NULL)return; while(*p!='\0') { p++; } while(*q!=0) { *p=*q; p++; q++; } *p = '\0'; } void main() { charp[7]="ABC"; charp2[]="EFG"; connect(p,p2,3); printf("%s",p); } 4、分析下面的代码:char*a = "hello"; char*b = "hello"; if(a==b) printf("YES"); else