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。
最后更新于 2023-10-11 06:07:34 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章