人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这
种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。
但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在
被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道
所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果
该面试者没有为这次面试做准备,那么他又能为什么出准备呢?
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 是一
个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指