嵌入式linuxC语言基础

上传人:壹****1 文档编号:456452015 上传时间:2023-09-22 格式:DOC 页数:4 大小:23KB
返回 下载 相关 举报
嵌入式linuxC语言基础_第1页
第1页 / 共4页
嵌入式linuxC语言基础_第2页
第2页 / 共4页
嵌入式linuxC语言基础_第3页
第3页 / 共4页
嵌入式linuxC语言基础_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《嵌入式linuxC语言基础》由会员分享,可在线阅读,更多相关《嵌入式linuxC语言基础(4页珍藏版)》请在金锄头文库上搜索。

1、嵌入式linux工程师面试题目C语言基础部分 在网上看到了一篇嵌入式 的面试题,忽然觉得自己很渺小 在未来一段时间内我会陆续贴上我 的答案,当然可能有些我做不出来,做出来 的也不一定准确, 在检验和提高自己 的同时,希望有走过路过高人指点一二。下面 的题目必须全部答对才给分:1、 如何 在 C中初始化一个字符数组。2、 如何 在 C中为一个数组分配空间。3、 如何初始化一个指针数组。4、如何定义一个有10个元素 的整数型指针数组。5、 s10 的另外一种表达方式 是什么。6、 GCC3.2.2版本中支持哪几种编程语言。7、 要使用CHAR_BIT需要包含哪个头文件。8、 对(-1.2345)取

2、整 是多少?9、 如何让局部变量具有全局生命期。10、C中 的常量字符串应 在何时定义?11、如何 在两个.c文件中引用对方 的变量。12、使用malloc之前需要做什么准备工作。13、realloc函数 在使用上要注意什么问题。14、strtok函数 在使用上要注意什么问题。15、gets函数 在使用上要注意什么问题。16、C语言 的词法分析 在长度规则方面采用 的 是什么策略?17、a+b所表示 的 是什么意思?有什么问题?18、如何定义Bool变量 的 TRUE和FALSE 的值。19、C语言 的 const 的含义 是什么。 在定义常量时,为什么推荐使用const,而不 是 #defi

3、ne。20、C语言 的 volatile 的含义 是什么。使用时会对编译器有什么暗示。这部分 是 ANSI C 的一些问题,题目 的前提 是必须都答对,看似很变态,但 是细想一下,这些都 是最基础 的,虽然我们 在使用他们 的时候会犯这样那样 的错误,但 是最终目 的 是不犯错误,不 是么,那么好,从最基础 的开始。1、 如何 在 C中初始化一个字符数组。这个问题看似很简单,但 是我们要将最简单 的问题用最严谨 的态度来对待。关键 的地方:初始化、字符型、数组。最简单 的方法 是 char array;。这个问题看似解决了,但 是 在初始化上好像还欠缺点什么,个人认为:char array5=

4、1,2,3,4,5;或者char array5=12345;或者char array210=China,Beijing;也许更符合“初始化” 的意思。2、 如何 在 C中为一个数组分配空间。最简单 的方法 是:char array5;意思 是分配给数组array一个5个字节 的空间。但 是我们要知道 在 C中数组其实就 是一个名字,其实质含义就 是指针,比如char array; 是到底分配 的多少空间?所以我们要将其分成为两种不同 的形式给出答案:一种 是栈 的形式:char array5;一种 是堆 的形式:char *array; array=(char *)malloc(5);/C+:

5、 array=new char5;堆和栈 的含义其实我也没弄太透彻,改天明白了再发一篇。我们要明白 的 是,第一种形式空间分配 的大小可能会受操作系统 的限制,比如windows会限制 在 2M;第二种形式成空间分配很灵活,想分配多少分配多少,只要RAM够大。3、 如何初始化一个指针数组。首先明确一个概念,就 是指向数组 的指针,和存放指针 的数组。指向数组 的指针:char (*array)5;含义 是一个指向存放5个字符 的数组 的指针。存放指针 的数组:char *array5;含义 是一个数组中存放了5个指向字符型数据 的指针。按照题意,我理解为初始化一个存放指针 的数组,char *

6、array2=China,Beijing;其含义 是初始化了一个有两个指向字符型数据 的指针 的数组,这两个指针分别指向字符串China和Beijing。4、如何定义一个有10个元素 的整数型指针数组。既然只 是定义而不 是初始化,那就很简单且没有争议了:int *array10;。5、 s10 的另外一种表达方式 是什么。前面说过了,数组和指针其实 是数据存 在形态 的两种表现形式,如果说对于数组s,我们知道*s=s0,那么s10 的另一种表达方式就 是:*(s+10)。6、 GCC3.2.2版本中支持哪几种编程语言。这个问题实 在变态,就像问你#error 的作用 是什么一样。不可否认,g

7、cc 是 linux下一个亮点, 是一个备受无数程序员推崇 的编译器,其优点省略1000字,有兴趣可以自己查,我翻了翻书,书上曰:支持C,C+,Java,Obj-C,Ada,Fortran,Pascal,Modula-3等语言,这个“等”比较要命,不过我认为已经很全了,如果认为还 是不全,干脆把ASM也加上算了,不过那已经不算 是编译了。7、 要使用CHAR_BIT需要包含哪个头文件。如果结合上面 的问题,答题 的人估计会认为自己撞鬼了,这个问题实 在 是 搜索了一下,应该 是 limits.h。8、 对(-1.2345)取整 是多少?其实不同 的取整函数可能有不同 的结果,不过这个数没有太大

8、 的争议,答案 是 -1。9、 如何让局部变量具有全局生命期。具体 的生命期 的概念我觉得我还要好好深入 的学习一下,但 是这个题目还算比较简单,即用static修饰就可以了,但 是只 是生命期延长,范围并没有扩大,除非把这个变量定义 在函数体外 的静态区,不过那样就变成全局变量了,仿佛不符合题目要求。10、C中 的常量字符串应 在何时定义?这个问题说实话不 是很理解题干 的意思,据我理解,有两种情况,一种 是预处理阶段,用#define定义;还有就 是使用const修饰词,不过const修饰 的 是一个变量,其含义 是 “只读”,称之为常量并不准确,但 是确实可以用操作变量 的方法当常量用。

9、所以还 是第一种比较靠谱。11、如何 在两个.c文件中引用对方 的变量。这个问题也问 的挺含糊 的,怎么说呢,最简单最直接 的方法 是为变量添加extern修饰词,当然,这个变量必须 是全局变量。还有一种就 是利用函数调用来进行变量 的间接引用,比如这个C文件中 的一个函数引用另外一个C中 的函数,将变量通过实参 的形式传递过去。不过题目既然说 是引用,那么还 是用第一个答案好了。12、使用malloc之前需要做什么准备工作。其实准备工作很多啊,比如你需要一台计算机之类 的。玩笑话,我们首先要知道malloc 的用途,简单 的说就 是动态 的分配一段空间,返回这段空间 的头指针。实际 的准备工

10、作可以这么分:需要这段空间 的指针 是否存 在,若不存 在,则定义一个指针用来被赋值,还要清楚要返回一个什么类型 的指针,分配 的空间 是否合理;如果指针已经存 在,那么 在重新将新 的空间头地址赋值给这个指针之前,要先判断指针 是否为NULL,如果不 是要free一下,否则原来 的空间就会被浪费,或者出错,free之后就按照前一种情形考虑就可以了。13、realloc函数 在使用上要注意什么问题。这个函数我也才知道 的,汗一个。据我 的初步理解,这个函数 的作用 是重新分配空间大小,返回 的头指针不变,只 是改变空间大小。既然 是改变,就有变大、变小和为什么改变 的问题。变大,要注意不能大到

11、内存溢出;变小,那变小 的那部分空间会被征用,原有数据不再存 在;为什么改变,如果 是想重新挪作他用,还 是先free了吧。14、strtok函数 在使用上要注意什么问题。这个问题我不知道能不能回答全面,因为实 在 是用 的很少。这个函数 的作用 是分割字符串,但 是要分割 的字符串不能 是常量,这 是要注意 的。比如先定义一个字符串:char array=part1,part2;,strtok 的原形 是 char *strtok(char *string, char *delim);,我们将,作为分隔符,先用pt=strtok(array,);,得到 的结果print出来就 是 part1

12、,那后面 的呢,要写成pt=strtok(NULL,);,注意,要用NULL,如果被分割 的字符串会被分成N段,那从第二次开始就一直要用NULL。总结起来,需要注意 的 是:被分割 的字符串和分隔符都要使用变量;除第一次使用指向字符串 的指针外,之后 的都要使用NULL;注意使用这个函数 的时候千万别把指针跟丢了,不然就全乱了。15、gets函数 在使用上要注意什么问题。这 是一个键盘输入函数,将输入字符串 的头地址返回。说到要注意 的问题,我还 是先查了一下网上 的一些情况,需要注意 的就 是 gets以输入回车结束,这个地球人都知道,但 是很多人不知道 的 是,当你输入完一个字符串后,这个

13、字符串可能依然存 在于这个标准输入流之中,当再次使用gets 的时候,也许会把上次输入 的东西读出来,所以应该 在使用之后用fflush(stdin);处理一下,将输入流清空。最后也还 是要注意溢出 的问题。关于这个答案我比较含糊,不知道有没有高人高见?16、C语言 的词法分析 在长度规则方面采用 的 是什么策略?我无语闻所未闻啊还 是搜索了一下,有一篇文章,地址 是:, 是关于词法分析器 的。其中提到了两点策略: (1) 按最长匹配原则确定被选 的词型;(2) 如果一个字符串能为若干个词型匹配,则排列 在最前面 的词型被选中。不知道 是不 是题干 的要求,还 是其他什么。我乃一介草民,望达人

14、指点迷津!17、a+b所表示 的 是什么意思?有什么问题?这个东西(称之为东西一点都不过分)其实并没有语法错误,按照C对运算符等级 的划分,+ 的优先级大于+,那么这句话会被编译器看做:(a+)+(+b),这回明白了吧。有什么问题,语法上没有问题,有 的 是道德上 的问题!作为一个优秀 的程序员,我们要力求语句 的合法性和可读性,如果写这句 的人 是 在一个team里,那么他基本会被打 的半死最后讨论一下结果:假设a之前 的值 是 3,b 是 4,那么运行完这个变态语句后,a 的值 是 4,b 是 5,语句 的结果 是 8。18、如何定义Bool变量 的 TRUE和FALSE 的值。不知道这个题有什么陷阱,写到现 在神经已经大了,一般来说先要把TURE和FALSE给定义了,使用#define就可以:#define TURE 1#define FALSE 0如果有一个变量需要定义成bool型 的,举个例子:bool a=TURE;就可以了。19、C语言 的 const 的含义 是什么。 在定义常量时,为什么推荐使用const,而不 是 #define。首先,这个题干抽了10题回答 的一个大嘴巴。关于常量 的概念看来我要好好看看书了我说过了,const修饰词可以将一个变量修饰为“只读”,这个就能称为常量么?姑且认为可以。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号