-
精品文档
1.
写一个
标准
宏
MIN
,这个宏输入两个参数并返回较小的一个
。
2.
给定一个整型变量
p>
a
,
写两段代码,
第一个设置
a
的
bit
3
,
第二个清除
a
的
bit
3
。在以上两个操作中,要保持其它位不变
.
3.
语句
for( 1 );
它是什么
意思
?
do……while
和
while……do
有什么区别?
4.
用变
量
a
给出下面的定义
:
a)
一个整型数
b)
一个指向整型数的指针
c)
一个指
向指针的的指针,它指向的指针是指向一个整型数
5.
关键字
static
的作用是什么?
volatile
有什么含意
?
6.
下面的代码就使用了
__interrup
t
关键字去定义了一个中断服务子程序
(ISR)
,请评论一下这段代码的。
__interrupt double compute_area (double
radius)
{ double area = PI * radius
* radius;
printf(
return
area;
}
7.
下面的代码输出是什么,为什么?
void foo(void)
{ unsigned
int a = 6;
int b = -20;
(a+b > 6) ? puts(
}
8.
某
单片机片内提供
10
位精度的
AD
p>
转换器
,AD
转换结束后得到值为
0x355,
现只需
8
位精度
,
写出代码把结果存在
变量
x
中
,
并
写出
x
的二进制值
.
unsigned char x;
x=
;
x
的值
(
二进制
):
9.
在
PCB
设计中
,
嵌入式系统的外部晶振在布线时要注意什么
?
10
单片机上电后没有运转
,
要检查什么
?
精品文档
精品文档
2 .
写一个
标准
宏
MIN
,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B)
(
(
A
)
<= (B)
? (A) : (B))
这个测试是为下面的目的而设的:
1)
标识
#define
在宏中应用的基本知识。
这是很重要的。
因为在<
/p>
嵌入
(inline)
操作符
变为标准
C
的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌
入式系统来
说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2)
三重条件操作符的知识。这个操作符存在
C
语言中的原因是它使得编译器能
产生比
if-then-
else
更优的代码,了解这个用法是很重要的。
3)
懂得在宏中小心地把参数用括号括起来
4)
我也用这个问题开始讨论宏的副作用,例如:当你写下面
的代码时会发生什
么事?
least = MIN(*p++, b);
应试者如给
出上面的方案,
这说明或者他是一个汇编语言程序员
(这也许是
好事)
或者他是一个想进入新领域的
BASIC/FORTRA
N
程序员。
数据声明(
Data
declarations
)
5.
用变量
a
给出下面的定义
a)
一个整型数(
An
integer
)
b)
一个指向整型数的指针(
A
pointer to an integer
)
c)
一个指向指针的的指针,它指向的指针是指向一个整型数(
A pointer to a
pointer to an
intege
)
r
d)
一个有
10
个整型数的数组(
An array of 10 integers
)
e)
一个有
10
个指针的数组,该指针是指向一个整型数的。
(
An
array of 10
pointers to
integers
)
f)
一个指向有
10
个整型数数组的指针
(
A
pointer
to
an
array
of
10
integers
)
g)
一个指向函数的指针,该函数有一个整型参数并返回一个
整型数(
A
pointer
to
a
function
that
takes
an
integer
as
an
argument
and
returns
an
integer
)
h)
一个有
10
个指针的数组,
该指针指向一个函数,
该函数有一个整型参
数并返
回一个整型数(
An
array
of
ten
pointers
to
functions
that
take
an
integer
argument and return an integer
)
答案是:
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)
在函数体,<
/p>
一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2)
在模块内
(但在函数体外)
p>
,
一个被声明为静态的变量可以被模块内所用函数
< br>访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3)
在模块内,一个被声明为静态的函数只可被这一模块内的
其它函数调用。那
就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数
应试者能正确回答第一部分,
一部分能正确回答第二部分,
同是
很
少的人能懂得第三部分。
这是一个应试者的严重的缺点,
p>
因为他显然不懂得本地
化数据和代码范围的好处和重要性。
Const
<
/p>
7
.关键字
const
< br>有什么含意?
我
只要一听到被面试者说:
意味着常数
<
/p>
,我就知道我正在和一个
业余者打交道。
去年
Dan
Saks
已经在他的文章
里完全概括了
const
的所有用法,
因此
ESP(
译者:
Embedded
Systems Programming)
的每一位读者应该非常熟悉
const
能做什么和不能做什么
.
< br>如果你从没有读到那篇文章,只要能说出
const
意味
着
只读
就可以
了。
尽管这个答案不是完全的答案,
但我接受它作为一个正
p>
确的答案。
(如果你想知道更详细的答案,仔细读一下
Saks
的文章吧。
)
如果应试者能正确回答这个问题,我将问他一个附加的问题:
下面的声明都是什么意思?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
精品文档