background image

人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这

 

种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。
但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在

 

被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道
所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果

 

该面试者没有为这次面试做准备,那么他又能为什么出准备呢?

Static 

6. 关键字 static

 

的作用是什么?

这个简单的问题很少有人能回答完全。在 C 语言中,关键字 static 有三个明显

 

的作用:
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不

 

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

 

函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

 

那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少
的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地

 

化数据和代码范围的好处和重要性。

Const 

7.关键字 const

 

是什么含意?

我只要一听到被面试者说: const

意味着常数 ,我就知道我正在和一个业余

者打交道。去年 Dan Saks 已经在他的文章里完全概括了 const 的所有用法,
因此 ESP(译者:Embedded Systems Programming)的每一位读者应该非
常熟悉 const 能做什么和不能做什么. 
如果你从没有读到那篇文章,只要能说出 const

意味着 只读 就可以了。尽管

这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道
更详细的答案,仔细读一下 Saks 的文章吧。)如果应试者能正确回答这个问

 

题,我将问他一个附加的问题:下面的声明都是什么意思?

const int a; 
int const a; 
const int *a; 
int * const a; 
int const * a const; 

前两个的作用是一样,a 是一个常整型数。第三个意味着 a 是一个指向常整型
数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思 a 是一
个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指