- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言常见笔试题及答案
c语言常见笔试题总结 c语言笔试题(九)2006-09-06Tag: C语言1.#include stdio.hint main(){ int a; int *p; p = a; *p = 0x500; a = (int )(*(p)); a = (int )((*p)); if(a == (int)p) printf(equal !\n); else printf(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语言中写可重入函数,应注意的事项?答案:可重入函数是指能够被多个线程“同时”调用的函数,并且能保证函数结果的正确性的函数。在编写可重入函数时通常要注意如下的一些问题:尽量不要使用全局变量,静态变量,如果使用了应该注意对变量访问的互斥。通常可以根据具体的情况采用:信号量机制,关调度机制,关中断机制等方式来保证函数的可重入性。不要调用不可重入的函数,调用了不可重入的函数会使该函数也变为不可重入的函数。注意对系统中的临界资源,互斥资源的访问方式,防止使函数成为不可重入的函数。一般驱动程序都是不可重入的函数,因此在编写驱动程序时一定要注意重入的问题。7. printf (“%d%d\n”,++n, power(2,n)); 其中power(2,n)为实现一定功能的函数 如 2^n 。 请问这种表示方法有什么潜在的问题? 答案:编译器的不同,对++n 和power(2,n)处理的先后顺序不一样,形成二义性,造成程序的移植性差,因此最好把++n 写在printf函数外面,以消除二义性。printf (s); 请问这样的语句有没有问题?(s为一指向有效字符串的指针) 答案:没有%的话,可以这样表达,如果有%在s中的话,有意想不到的输出结果。9. 两段代码共存于一个文件,编译时有选择的编译其中的一部分,请问如何实现?答案:有两种简单的办法可以实现:在源码中使用条件编译语句,然后在程序文件中定义宏的形式来选择需要的编译代码。在源码中使用条件编译语句,然后在编译命令的命令中加入宏定义命令来实现选择编译。10.数据结构指针传给函数,函数能访问数据单元,但不能修改实际的内容,如何实现?答案:定义为指向常量的指针,这样指针所指的数据结构中的内容就不会被改变。如: const 类型 *p 或 类型 const *p11. 在头文件中定义静态变量,可能产生什么问题? 答案:在使用了该头文件的
文档评论(0)