面试题02

1.嵌入式系统中经常要用到无限循环,如何用C编写死循环

答:while(1){}或者for(;;)


2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。

答:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。


3.关键字const有什么含义?

答:1)只读。2)使用关键字const也许能产生更紧凑的代码。3)使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。


4.请问以下代码有什么问题:

答:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。


5.已知一个数组table,用一个宏定义,求出数据的元素个数

答: #define NTBL (sizeof(table)/sizeof(table[0]))


6.写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。

答:#define MIN(A,B)   ((A) <= (B) ? (A) : (B))


7.do……while和while有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环。


8.什么是预编译,何时需要预编译?

答:1)总是使用不经常改动的大型代码体。

        2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。


9.一个32位的机器,该机器的指针是多少位?

答:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。


10.局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。(就近原则

对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

你可能感兴趣的:(面试题02)