C语言一般考点笔试,c语言常见笔试题及答案.pdf

C语言一般考点笔试,c语言常见笔试题及答案.pdf

  1. 1、本文档共1页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言一般考点笔试,c语言常见笔试题及答案--第1页 C语⾔⼀般考点笔试,c语⾔常见笔试题及答案 c语⾔常见笔试题及答案 c语⾔常见笔试题总结c语⾔笔试题(九) 2006-09-06 Tag: C语⾔ 1. #include “stdio.h“ int main() {int a;int *p;p = *p = 0 x500;a = (int )(*(a = (int )(if(a == (int)p)printf(“equal !\n“);elseprintf(“not equal !\n“); } 请问本程序的输出显⽰是什么? 答案:输出显 ⽰为”equal!” 2. 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)是否是正确的表达式? 请问语句bits mybits; 的定义是否正确?如果 不正确,要如何修改上述的结构定义才能使 该语句正确?修改后的结构定义是否会影响sizeof(bits)的正确性?如果正确则该表达式 的值为 多少?如果将上述的结构中int类型改为char类型,此时sizeof(bits)的⼤⼩为多 少? 答案:1)是正确的表达式,因为sizeof后⾯的内容可 以是类型,也可以是变量。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平台的 函数调⽤为例,通常⼀个函数编译成汇编程序,都有如下的结构: 其中的leave指令相当于:mov ebp,esp ;pop ebp 各个函数在栈空间的映象为:test1 函数 test2函数 test3函数因此在函数test3中,就可以根据这种栈框架的形式得 到函数调⽤层次上的每个函数的基址 指针,当前栈指针,以及函数调⽤点等信息。 7. printf (“%d%d\n”,++n, power(2,n)); 其中 power(2,n)为实现⼀定功能的函数 如 2^n 。请问这种表⽰⽅法有什么潜在的问题?答案:编译器的不同,对++n 和power(2,n)处理的先 后顺序不⼀样,形成⼆义性,造成程 序的移植性差,因此最好把++n 写在pri

文档评论(0)

. + 关注
官方认证
内容提供者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地河南
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档