c语言常见笔试题及答案(2)

发布时间:2021-06-07

c语言常见笔试题及答案

2)该语句的定义不正确,因为此时的bits为一个变量;应该这样修改结构的定义 typedef struct {

signed int bit0:1;

signed int bit1:1;

signed int bit2:1;

signed int bit3:1;

signed int bit4:1;

signed int bit5:1;

signed int bit6:1;

signed int bit7:1;

}bits;

修改后sizeof(bits)表达式依然正确,其值为4;类型改为char后其值为1,注意该值是在VC环境中的32位程序中得到的值,在不同的编译器其值有可能不同,因此在编程时不能自己假定类似结构的大小。

3.

struct bit{

unsigned int a[0]:1,a[1]:1,a[2]:1 .a[7]:1;

}

请问这种写法是否正确?为什么?

答案:不正确,位域中的变量不能是数组。

4.

struct a {

int x;

char y;

struct a z;

struct a *p;

}

请问这种定义结构正确否? 如果有问题,问题在哪里?

答案:结构中不能对定义结构本身的非指针变量,如果编译器支持则会导致无限嵌套,因此一般编译器都会认为struct a是未定义的类型,即使提前声明也不会有任何用处。

5. 什么是可重入函数?C语言中写可重入函数,应注意的事项?

答案:可重入函数是指能够被多个线程“同时”调用的函数,并且能保证函数结果的正确性的函数。在编写可重入函数时通常要注意如下的一些问题:

尽量不要使用全局变量,静态变量,如果使用了应该注意对变量访问的互斥。通常可以根据具体的情况采用:信号量机制,关调度机制,关中断机制等方式来保证函数的可重入性。 不要调用不可重入的函数,调用了不可重入的函数会使该函数也变为不可重入的函数。 注意对系统中的临界资源,互斥资源的访问方式,防止使函数成为不可重入的函数。 一般驱动程序都是不可重入的函数,因此在编写驱动程序时一定要注意重入的问题。

6. 简述stack frame 的含义。

答案:stack frame的中文译名为:栈框架,表示函数在栈空间的调用层次,以x86平台的函数调用为例,通常一个函数编译成汇编程序,都有如下的结构:

c语言常见笔试题及答案(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219