现在的位置: 首页 > 综合 > 正文

面试题总结 – C 语言 – 数据声明(data declaration)

2013年09月05日 ⁄ 综合 ⁄ 共 702字 ⁄ 字号 评论关闭

1.用变量a给出下面的定义

a) an integer

int a;

b) a pointer to an integer

int *a;

c) a pointer to a pointer to an integer

int **a;

d) an array of 10 integers

int a[10];

e) an array of 10 pointers to integers

int* a[10];

f) a pointer to an array of 10 integers

int (*a)[10];

g) a pointer to a function that takes an integer as an argument and returns an integer

int (*func)(int);

h) an array of ten pointers to functions that take an integer argument and return an integer

int (*func[10])(int);

2. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?
这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;

第一个扩展为
struct s * p1, p2;

上面的代**定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

3.

抱歉!评论已关闭.