嵌入式linux面试题

2019-07-12 16:15发布

基础试题(C语言) 

一、ANSI C/C++方面的知识 
一.1、简答题。下面的题目必须全部答对才给分(20分): 
1、 如何在C中初始化一个字符数组。 
       char s[100]={' '};
2、 如何在C中为一个数组分配空间。 
       char s[10];         s=malloc(10*sizeof(char));
3、 如何初始化一个指针数组。
       int *pt[10]={NULL}; 
4、 如何定义一个有10个元素的整数型指针数组。 
      int *pt[10]={NULL}; 
5、 s[10]的另外一种表达方式是什么。 
       *(s+10);
6、 GCC3.2.2版本中支持哪几种编程语言。
C,C++,java,ada,fortran
7、 要使用CHAR_BIT需要包含哪个头文件。 #include #define CHAR_BIT 8
Description
CHAR_BIT is the number of bits for smallest object that is not a bit-field (byte).
Portability
CHAR_BIT conforms to ISO/IEC 9899:1990 (C90) and ISO/IEC 9899:1999 (C99). 一般计算机都把1字节定义为8位,但在有些老式的机器上有7位或者9位的情况,所以在编码的时候通常为了兼容性,把1字节的位数不直接用8而且是用CHAR_BIT宏定义来表示。
8、 对(-1.2345)取整是多少? C语言有以下几种取整方法: 
1、直接赋值给整数变量。如: 
int i = 2.5; 或 i = (int) 2.5; 
这种方法采用的是舍去小数部分,可以用于你的问题。 
2、C/C 中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,可以用于你的问题。但是整数除法对负数的取整结果和使用的C编译器有关。 
3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: 
floor(2.5) = 2 
floor(-2.5) = -3 
4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如: 
ceil(2.5) = 3 
ceil(-2.5) = -2 
floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。floor函数可以用于你的问题。 

9、 如何让局部变量具有全局生命期。      在变量前加static关键词
10、C中的常量字符串应在何时定义?        在不允许程序改变字符串内容时。
11、如何在两个.c文件中引用对方的变量。         使用extern声明变量。
12、使用malloc之前需要做什么准备工作。       定义一个指针指向所分配的空间。
13、realloc函数在使用上要注意什么问题。 extern void *realloc(void *mem_address, unsigned int newsize); 功能:先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。
14、strtok函数在使用上要注意什么问题。 char *strtok(char *s, const char *delim); strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为