2021年电子信息科学与技术专业毕业生
《C语言单片机》求职考试题及面试题库
(附:答案)
一、数据声明(Data declarations)。
用变量a给出下面的定义:
a)、一个整型数(An integer);
b)、一个指向整型数的指针(A pointer to an integer);单片机printf函数
c)、一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer);
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。
关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但 不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个 函数被限制在声明它的模块的本地范围内使用。
三、关键字Const。
关键字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是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,
你就会很快学会感谢这点多余的信息。当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
四.关键字Volatile。
关键字volatile有什么含意并给出三个不同的例子。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1). 并行设备的硬件寄存器;如:状态寄存器。
2). 一个中断服务子程序中会访问到的非自动变量:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论