2016年c语言面试题目

C语言面试常见问题

预处理器(预处理器)

1.用预处理指令#define声明一个常量,以显示一年中有多少秒(忽略闰年问题)。

#定义秒/年(60 * 60 * 24 * 365)UL

我想看看这里的一些东西:

1)关于# define语法的基本知识(例如,不能以分号结尾,括号的使用等。)

2)知道预处理器会为你计算常量表达式的值,所以直接写你是如何计算一年中的秒数的,而不是计算实际值,这样更清楚,也更无成本。

3)认识到这个表达式会溢出16位机器的整数——所以用长整数符号L告诉编译器这个常数是长整数。

4)如果你在表达式中使用UL(无符号长整型),你有一个很好的起点。记住,第一印象很重要。

2.编写一个“标准”宏MIN,它输入两个参数并返回较小的一个。

#定义MIN(A,B) ((A) = (B)?(A) : (B))

该测试旨在实现以下目的:

1)识别宏中#define应用的基本知识。这一点非常重要。因为在内联操作符成为标准C的一部分之前,宏是方便生成嵌入式代码的唯一途径。对于嵌入式系统,为了达到所需的性能,嵌入式代码往往是一种必要的方法。

2)三条件运算符的知识。这个运算符之所以存在于C语言中,是因为它使编译器能够生成比if-then-else更优化的代码。理解这种用法很重要。

3)知道如何在宏中小心地将参数括在括号中。

4)我也用这个问题来讨论宏的副作用,比如:你写下面这段代码会怎么样?

least = MIN(*p,b);

3.预处理程序标识#error的目的是什么?

如果不知道答案,请参考参考文献1。这个问题对于区分正常哥们和书呆子很有用。只有书呆子才会去读一本C语言教科书的附录,去寻找这样一个问题的答案。当然,如果你找的不是书呆子,那么候选人最好希望他不知道答案。

无限循环(无限循环)

4.无限循环经常在嵌入式系统中使用。用C语言怎么写无限循环?

这个问题有几种解决方法。我的第一选择是:

while(1)

{

}

一些程序员更喜欢下面的方案:

for(;;)

{

}

这个实现让我很尴尬,因为这个语法并没有准确地表达出正在发生的事情。如果一个候选人把这作为一个计划,我会以此为契机,探索他们这样做的基本原则。如果他们的基本回答是:“有人教我这么做,但我从没想过为什么。”这会给我留下不好的印象。

第三种方案是使用goto。

循环:

...

转到循环;

如果考生给出了上述方案,说明他要么是汇编语言程序员(这可能是好事),要么是想进入新领域的BASIC/FORTRAN程序员。

数据声明(数据声明)

5.使用变量A给出以下定义

a)整数。

b)指向整数的指针。

c)指向一个整数的指针(指针指向一个整数的指针)r) r。

d)10个整数的数组。

e)一个有10个指向整数的指针的数组。(10个指向整数的指针的数组)

f)指向10个整数的数组的指针。

g)指向有整数参数并返回整数的函数的指针(指向以整数为自变量并返回整数的函数的指针)。

h)一个有10个指针的数组,指向一个函数,该函数有一个整数参数并返回一个整数(一个有10个指针的数组,指向接受一个整数参数并返回一个整数的函数)。

答案是:

a)int a;//整数

b)int * a;//指向整数的指针

c)int * * a;//指向整数指针的指针

intac语言的经典面试问题 CString保存日志(char *fmt,...)

{

va_list标记;

va_start( marker,fmt);

char buf[1024]= { 0 };

vsprintf(buf,fmt,marker);

va_end(标记);

CString sLog

辛苦了。格式(" %s\n ",tNow。格式("[%Y-%m-%d %H:%M:%S]",buf);

返回sLog

}

调用:savelog ("%s% s. [%s])、strfiname、sfound、strvirus、skilled eng);

我给你举个例子。

但这个例子是VC的。不知道能不能在c下运行。

C语言面试有哪些常见问题? c语言面试常见问题有:

1.C语言的主要特点是什么?

c是一种过程语言。C语言的主要功能包括对内存的低级访问、简单的关键字集和简洁的风格。这些功能使其适用于操作系统或编译器开发等系统编程。

2.I和++I有什么区别?

1)表达式“I”返回旧值,然后递增I..表达式++i递增该值并返回新值。

2)后缀++优先于前缀++。

3)后缀++的关联是从左到右,前缀++的关联是从右到左。

4)在C中,++I可以作为左值,但I不能作为左值。在c中,它们都不能作为l值。

3.L值是多少?

l值或位置值是指可以用在赋值运算符左侧的表达式。例如,在表达式“a = 3”中,a是l的值,3是r的值。

有两种类型的l值:

“不可修改的L值”是指不可修改的L值。常量变量是一个“不可修改的L值”。

“可修改的l值”是指可以修改的l值。

4.数组和指针有什么区别?

指针用于存储动态分配的数组和作为参数传递给函数的数组的地址。在其他情况下,数组和指针是两回事。虽然数组和指针是不同的东西,但数组的以下属性使它们看起来很相似。

5.C语言中的“循环”数据类型是什么?

所谓“循环”数据类型,其实就是某一类数据溢出,然后从头开始存储。一个典型的例子是,如果无符号字符变量已经等于255,还在加1,那么变量将从开始溢出,等于零:

无符号字符a = 255 .

a = a 1;// a等于0。

相关文章

发表新评论