background image

 

答案是:

a) int a; // An integer 
b) int *a; // A pointer to an integer 
c) int **a; // A pointer to a pointer to an integer 
d) int a[10]; // An array of 10 integers 
e) int *a[10]; // An array of 10 pointers to integers 
f) int (*a)[10]; // A pointer to an array of 10 integers 
g) int (*a)(int); // A pointer to a function a that takes an integer 
argument and returns an integer 
h) int (*a[10])(int); // An array of 10 pointers to functions that take an 
integer argument and return an integer 

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

Static 

6. 关键字 static 的作用是什么?
这个简单的问题很少有人能回答完全。在 C 语言中,关键字 static 有三个明显
的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不
变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用
函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那
就是,这个函数被限制在声明它的模块的本地范围内使用。

大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少
的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地
化数据和代码范围的好处和重要性。

Const 

7.关键字 const 有什么含意?
我只要一听到被面试者说:"const 意味着常数",我就知道我正在和一个业余
者打交道。去年 Dan Saks 已经在他的文章里完全概括了 const 的所有用法,