C语言经典面试题

合集下载

c语言面试经常问的问题C语言面试题

c语言面试经常问的问题C语言面试题

c语言面试经常问的问题C语言面试题C语言面试题篇11、已知字母b的ASCII码的十进制代码为98,则执行下列语句输出为(C)ch=’b’;ch–;printf(%d,%c\n”,ch,ch);A)a,bB)运算不合法,故有语法错C)97,aD)格式描述和输出项不匹配,输出无值2、若变量a已说明为float类型,则能实现将a中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(C)A)a=(a某100+0.5)/100.0B)a=(a某100+0.5)/100C)a=(int)(a某100+0.5)/100D)a=(a/100+0.5)某100.03、下列程序段的输出结果是(B)inta=5,b=7;printf(“%d,%d”,a++,++b);A)5,7B)5,8C)6,7D)6,8C语言面试题篇21、下列程序的输出结果是(D){inta=4;a某=a+=6;printf(“%d\n”,a);}A)40B)60C)80D)1002、下列程序的输出结果是(C)main(){inta=8;printf(“%a”,(a=a某5,a+6));}A)14B)40C)46D)50C语言面试题篇31、定义a为整型,下列表达式a=3>6的运行后,a的值为(A)A)0B)1C)3D)表达式错误2、、如果a=1,b=2,c=3,d=4,则条件表达式a>ba:c>dc:d的值为(D)A)1B)2C)3D)43、下述程序段的输出结果是(A){inta=5;printf(“%d,”,a);a+=a某=a-=a某=2;printf(“%d”,a);}A)5,0B)0,0C)5,12D)0,124、下列变量名中合法的是(A)A)TomB)3a6bC)6a7bD)5ABC5、对于条件表达式(M)(a++):(a–),其中的表达式M等价于(C)A)M==0B)M==1C)M!=0D)m!=1。

C语言面试题(深度)

C语言面试题(深度)
16 下面代码的有问题吗?为什么?
#include <stdio.h> void func(char a[10]) {
char c = a[3]; } int main() {
char b[10] = "abcdefg"; func(b[10]); return 0; }
/* * 这里至少有两上严重错误, * 第一,b[10]并不存在,在编译的时候,由于没有去实际地址取值,所以没 有出错。但在运行的时, * 将计算b[10]的实际地址,并且取值。这时候发生越界错误。 * 第二, * warning: * passing argument 1 of 'func' makes pointer from integer without a cast *这是func函数会将传入的char类型的数据当作地址处理,同样会发生错误 。 */
2 下面代码有问题么?为什么?(segment error, 读越界,写越界)
#include <stdio.h> #include <string.h> void foo(void) {
char string[10],str1[10]; int i; for(i=0; i<10; i++) {
str1[i] = 'a'; } strcpy(string,str1); printf("%s",string); } int main() { foo(); return 0; }
代码 2 ,volatile 关键字告诉编译器,i 是随时可能发生的变化的,每次使用 它的时候,必须从内存中取出 i 的值。因而编译器生成的汇编代码会重新从 i 的地址处 读取数据放在 k 中。

C语言面试题(经典全)

C语言面试题(经典全)

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 <stdlib.h>#include <stdio.h>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++用inline8.软件测试都有那些种类?黑盒:针对系统功能的测试白合:测试函数功能,各函数接口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 500void LmiQueryCSmd(Struct MSgCB * pmsg){unsigned char ucCmdNum;......for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++){......;}死循环(unsigned char 0 到 255)3.以下是求一个数的平方的程序,请找出错误:#define SQUARE(a)((a)*(a))int a=5;int b;b=SQUARE(a++);//a被加了2次 a=7,b=252、有一个16位的整数,每4位为一个数,写函数求他们的和。

c语言面试题目100及最佳答案精选全文

c语言面试题目100及最佳答案精选全文

精选全文完整版(可编辑修改)c语言面试题目及最佳答案1、描述⼀下gcc的编译过程?gcc编译过程分为4个阶段:预处理、编译、汇编、链接。

预处理:头⼀件包含、宏替换、条件编译、删除注释编译:主要进⼀词法、语法、语义分析等,检查⼀误后将预处理好的⼀件编译成汇编⼀件。

汇编:将汇编⼀件转换成⼀进制⼀标⼀件链接:将项⼀中的各个⼀进制⼀件+所需的库+启动代码链接成可执⼀⼀件2、内存的最⼀存储单位以及内存的最⼀计量单位分别是?内存的最⼀存储单位为⼀进制位,内存的最⼀计量单位字节3、#include<> 与#include ""的区别?include<>到系统指定⼀录寻找头⼀件,#include ""先到项⼀所在⼀录寻找头⼀件,如果没有找再到系统指定的⼀录下寻找4、描述⼀下变量的命名规则变量名有字⼀、数值、下划线组成,但不能以数值开头5、变量的声明与定义有啥区别?声明变量不需要建⼀存储空间,变量的定义需要建⼀存储空间6、谈谈c语⼀中有符号和⼀符号的区别?有符号:数据的最⼀位为符号位,0表示正数,1表示负数⼀符号:数据的最⼀位不是符号位,⼀是数据的⼀部分7、谈谈计算机中补码的意义统⼀了零的编码将符号位与其他位统⼀处理将减法运算转换成加法运算8、谈谈数组的特点同⼀个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的9、数组的分类数组的分类主要是:静态数组、动态数组两类。

静态数组:类似int arr[5];在程序运⼀就确定了数组的⼀⼀,运⼀过程不能更改数组的⼀⼀。

动态数组:主要是在堆区申请的空间,数组的⼀⼀是在程序运⼀过程中确定,可以更改数组的⼀⼀。

10、描述⼀下⼀维数组的不初始化、部分初始化、完全初始化的不同点不初始化:如果是局部数组数组元素的内容随机如果是全局数组,数组的元素内容为0 部分初始化:未被初始化的部分⼀动补0完全初始化:如果⼀个数组全部初始化可以省略元素的个数数组的⼀⼀由初始化的个数确定11、谈谈数组名作为类型、作为地址、对数组名取地址的区别?数组名作为类型:代表的是整个数组的⼀⼀数组名作为地址:代表的是数组⼀元素的地址对数组名取地址:代表的是数组的⼀地址12、谈谈你对⼀维数组在物理上以及逻辑上的数组维度理解⼀维数组在逻辑上是⼀维的,在物理上是⼀维的13、描述⼀下函数的定义与函数的声明的区别函数定义:是指对函数功能的确⼀,包括指定函数名、函数类型、形参及其类型、函数体等,它是⼀个完整的、独⼀的函数单位。

c语言 面试题

c语言 面试题

c语言面试题C语言面试题C语言是一种广泛应用于系统编程和嵌入式开发领域的计算机编程语言。

如果你正在准备面试,那么掌握一些常见的C语言面试题是非常重要的。

本文将为你提供一些常见的C语言面试题,帮助你更好地准备面试。

一、基础知识类题目1. 什么是C语言?请简要介绍一下C语言的特点。

2. C语言中的标识符和关键字有什么区别?3. C语言中的数据类型有哪些?请列举并简要描述每种数据类型的特点。

4. 请解释一下指针的概念,并说明指针和数组之间的关系。

5. 什么是宏定义?请举一个宏定义的例子并说明其作用。

二、语法类题目1. 请解释一下C语言中的条件语句和循环语句,并举例说明。

2. 如何在C语言中定义一个函数?并简要说明函数的作用。

3. C语言中有哪些类型的运算符?请举例说明每种运算符的用法。

4. 请解释一下C语言中的结构体,并说明如何定义和使用结构体。

5. 什么是递归函数?请给出一个递归函数的例子并说明其执行过程。

三、面向对象编程类题目1. C语言是否支持面向对象编程?请说明理由。

2. 请简要介绍一下C语言中的封装、继承和多态的概念。

3. 在C语言中如何实现封装?请给出一个封装的例子,并说明每个部分的作用。

4. 请解释一下C语言中的函数指针,并说明函数指针和回调函数之间的关系。

5. 如何模拟实现C语言中的继承和多态特性?请给出一个示例。

四、内存管理类题目1. 什么是内存泄漏?请举一个例子,并说明如何避免内存泄漏。

2. 在C语言中如何申请和释放内存?请给出相应的代码示例。

3. 请解释一下C语言中的堆和栈,并说明它们的区别和用途。

4. 如何实现动态内存分配和动态数组的功能?请给出一个示例。

5. 请解释一下C语言中的内存对齐和内存对齐规则。

五、文件处理类题目1. 请简要介绍一下C语言中的文件处理机制。

2. 如何在C语言中打开和关闭文件?请给出相应的代码示例。

3. 如何读取和写入文件中的数据?请给出相应的代码示例。

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案作为IT行业人士需要掌握的最基本的计算机语言—c语言,如今的地位只高不低,c语言掌握程度的高低往往在面试的时候可以完全表现出来,而有些问题是大家平时似乎是知道的,但却不能完整准确地回答上来的,今天大家带来精心整理的C语言经典面试题,希望对大家有所帮助.1、请填写bool , float, 指针变量与“零值”比较的if语句。

提示:这里“零值”可以是0, 0。

0 , FALSE 或者“空指针”。

例如int 变量n 与“零值”比较的if 语句为:if ( n == 0 )if ( n != 0 )以此类推。

(1)请写出bool flag 与“零值”比较的if 语句:【标准答案】if ( flag ) if ( !flag )100 条经典 C语言笔试题目(2)请写出float x 与“零值"比较的if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x 〉= - EPSINON) &&(x <= EPSINON)不可将浮点变量用“==" 或“!=" 与数字比较,应该设法转化成“〉=”或“〈=”此类形式。

100 条经典 C语言笔试题目(3)请写出char *p 与“零值"比较的if 语句【标准答案】 if (p == NULL) if (p != NULL)2、以下为Linux下的32 位C 程序,请计算sizeof 的值。

char str[] = “Hello”;char *p = str ;i nt n = 10;请计算(1)sizeof (str ) = (2)s i zeof ( p ) = (3)sizeof ( n ) =【标准答案】(1)6、(2)4 、(3 )4(4)void Func ( char str[100]){……;}请计算sizeof( str ) =(5)void * p = mall oc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)44、用变量a 给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针;g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef u nion {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too; DATE max;则语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____【标准答案】DATE是一个union,变量公用空间。

C语言面试题大全

C语言面试题大全

第一部分:基本概念及其它问答题1、关键字static的作用是什么?这个简单的问题很少有人能回答完全。

在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。

它是一个本地的全局变量。

3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

那就是,这个函数被限制在声明它的模块的本地范围内使用。

大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。

这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。

2、“引用”与指针的区别是什么?答、1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针。

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。

程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用3、.h头文件中的ifndef/define/endif 的作用?答:防止该头文件被重复引用。

4、#i nclude<file.h> 与#i nclude "file.h"的区别?答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

5、描述实时系统的基本特性答:在特定时间内完成特定的任务,实时性与可靠性。

6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别?答:全局变量储存在静态数据区,局部变量在堆栈中。

盘点常见C语言面试题(含答案)_华清远见

盘点常见C语言面试题(含答案)_华清远见

盘点常见C语言面试题(含答案)在技术岗位面试的时候,C语言几乎是面试必考的题目,本篇文章为大家盘点汇总,常见的C语言面试题,大家可以先自己做做题,文章最后有答案。

1、某32位系统下, C++程序void *p = malloc( 100 ); sizeof (p) = ?A.1B.4C.100D.4002、在一个10阶的B-树上,每个树根结点中所含的关键字数目最多允许为( )个,最少允许为( )个。

A.10,5B.9,4C.8,3D.7,63、以下程序段执行后结果是()#includevoid main(){short *p,*q;shortarr[15]={0};p=q=arr;p++;printf("%d,",p-q);printf("%d,",(char*)p-(char*)q);printf("%d",sizeof(arr)/sizeof(*arr));}A.1,0,15B.0,2,1C.1,1,15D.1,2,154、(1)静态链表既有顺序存储的优点,又有动态链表的优点。

所以,它存取表中第i个元素的时间与i 无关。

(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加.(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。

以上错误的是()A.(1),(2)B.(1)C.(1),(2),(3)D.(2)5、已知两个一维模式类别的类概率密度函数为:先验概率P(1)=0.6,P(2)=0.4,则样本{x1=1.35,x2=1.45,x3=1.55,x4=1.65}各属于哪一类别?A.X4 ∈ w2B.X3 ∈ w1C.X2 ∈ w1D.X1 ∈ w16、程序员小李通过管道统计prog.c函数中for语句通过的次数,需要使用的指令分别是A.viB.grepC.wcD.sort7、设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项错误的是:A.可以随意读和写B.只能写不能读C.可以在原有内容后追加写D.写操作结束后可以从头开始读参考答案:1~5:BBDB ABCD 6~7:BC ACD以上盘点了7个C语言常见的面试题,答案已揭晓,你答对了几个呢?更多精彩内容在华清远见官网可以获得,华清远见提供免费的学习资料供大家参考。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Loop: ... goto Loop;
应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是 一个想进入新领域的 BASIC/FORTRAN 程序员。
数据声明(Data declarations)
5. 用变量 a 给出下面的定义 a) 一个整型数(An integer) b)一个指向整型数的指针( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to
1 . 用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: &#8226;; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
const int a; int const a; const int *a; int * const a; int const * a const;
/******/ 前两个的作用是一样,a 是一个常整型数。第三个意味着 a 是一个指向常整型数的指针(也 就 是,整型数是不可修改的,但指针可以)。第四个意思 a 是一个指向整型数的常指针(也就 是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着 a 是一个 指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修 改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句, 也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为 什么还要如此看重关键字 const 呢?我也如下的几下理由: &#8226;; 关键字 const 的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个 参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的 垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用 const 的程序员很少会留下的 垃圾让别人来清理的。) &#8226;; 通过给优化器一些附加的信息,使用关键字 const 也许能产生更紧凑的代码。 &#8226;; 合理地使用关键字 const 可以使编译器很自然地保护那些不希望被改变的参数,防 止其被无意的代码修改。简而言之,这样可以减少 bug 的出现。 Volatile
least = MIN(*p++, b);
3. 预处理器标识#error 的目的是什么? 如果你不知道答案,请看参考文献 1。这问题对区分一个正常的伙计和一个书呆子是很有用 的。只有书呆子才会读 C 语言课本的附录去找出象这种问题的答案。当然如果你不是在找一 个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops)
下面是答案: &#8226;; 是的。一个例子是只读的状态寄存器。它是 volatile 因为它可能被意想不到地改 变。它是 const 因为程序不应该试图去修改它。
&#8226;; 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个 buf fer 的指针时。 &#8226;; 这段代码有点变态。这段代码的目的是用来返指针*ptr 指向值的平方,但是,由 于*ptr 指向一个 volatile 型参数,编译器将产生类似下面的代码:
回答不出这个问题的人是不会被雇佣的。我认为这是区分 C 程序员和嵌入式系统程序员的最 基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS 等等打交道,所有这些都要求用 到 volatile 变量。不懂得 volatile 的内容将会带来灾难。 假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一 下这家伙是不是直正懂得 volatile 完全的重要性。 &#8226;; 一个参数既可以是 const 还可以是 volatile 吗?解释为什么。 &#8226;; 一个指针可以是 volatile 吗?解释为什么。 &#8226;; 下面的函数有什么错误: int square(volatile int *ptr) { return *ptr * *ptr; }
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
这个测试是为下面的目的而设的: &#8226;; 标识#define 在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作 符变为标准 C 的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能 达到要求的性能,嵌入代码经常是必须的方法。 &#8226;; 三重条件操作符的知识。这个操作符存在 C 语言中的原因是它使得编译器能产生 比 if‐then‐else 更优化的代码,了解这个用法是很重要的。 &#8226;; 懂得在宏中小心地把参数用括号括起来 &#8226;; 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事 ?
答案是: a) int a; // An integer
b) int *a; // A pointer to an integer c) int **a; // A pointer to a pointer to an integer d) int a[10]; // An array of 10 integers e) int *a[10]; // An array of 10 pointers to integers f) int (*a)[10]; // A pointer to an array of 10 integers g) int (*a)(int); // A pointer to a function a that takes an integer argument an d returns an integer h) int (*a[10])(int); // An array of 10 pointers to functions that take an integ er argument and return an integer 人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这种说法。当我写 这篇文章时,为了确定语法的正确性,我的确查了一下书。但是当我被面试的时候,我期望 被问到这个问题(或者相近的问题)。因为在被面试的这段时间里,我确定我知道这个问题 的答案。应试者如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做 准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢? Static 6. 关键字 static 的作用是什么? 这个简单的问题很少有人能回答完全。在 C 语言中,关键字 static 有三个明显的作用: &#8226;; 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 &#8226;; 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访 问,但不能被模块外其它函数访问。它是一个本地的全局变量。 &#8226;; 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是 ,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三 部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重 要性。
an intege)r d)一个有 10 个整型数的数组( An array of 10 integers) e) 一个有 10 个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) f) 一个指向有 10 个整型数数组的指针( A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a func tion that takes an integer as an argument and returns an integer) h)一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型 数 ( An array of ten pointers to functions that take an integer argument and retur n an integer )
4. 嵌入式系统中经常要用到无限循环,你怎么样用 C 编写死循环呢? 这个问题用几个解决方案。我首选的方案是:
while(1) { ?}
一些程序员更喜欢如下方案:
for(;;) { ?}
这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这 个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。如果他们的基本答案 是:“我被教着这样做,但从没有想到过为什么。”这会给我留下一个坏印象。 第三个方案是用 goto
Const
7.关键字 const 有什么含意? 我只要一听到被面试者说:“const 意味着常数”,我就知道我正在和一个业余者打交道。 去年 Dan Saks 已经在他的文章里完全概括了 const 的所有用法,因此 的每一位读者应该非常熟悉 const 能做什么和不能做什么.如果你从没有 读到那篇文章,只要能说出 const 意味着“只读”就可以了。尽管这个答案不是完全的答案 ,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下 Saks 的文章 吧。) 如果应试者能正确回答这个问题,我将问他一个附加的问题: 下面的声明都是什么意思?
8. 关键字 volatile 有什么含意?并给出三个不同的例子。 一个定义为 volatile 的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假 设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这 个变量的值,而不是使用保存在寄存器里的备份。下面是 volatile 变量的几个例子: &#8226;; 并行设备的硬件寄存器(如:状态寄存器) &#8226;; 一个中断服务子程序中会访问到的非自动变量(Non‐automatic variables) &#8226;; 多线程应用中被几个任务共享的变量
相关文档
最新文档