C语言测试题及考答案.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言测试题及考答案

C语言测试题 — 参考答案 (1~10题每题9分,11~16题每题10分,共计150分。请在答题纸上注明姓名及开始、结束时间) 1. 举例说明关键字static、const和volatile尽可能多的作用。 static关键字至少有下列几个作用: 1). 函数体内static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; 2). 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; 3). 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内; const关键字至少有下列几个作用: 1). 欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了; 2). 对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const; 3). 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值; volatile关键字至少有下列几个作用: 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器); 2). 一个中断服务子程序中会访问到的非自动变量; 3). 多线程应用中被几个任务共享的变量; 2. 请描述内存的分配方式及其区别,并编写一个函数为整型二维数组动态申请内存。 1). 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2). 在栈上分配。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元 自动被释放。栈内存分配运算内置于处理器的指令集。 3). 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc申请任意多少的内存,程序员自己负责在何时用free释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。 int get_2d_mem (int ***array2D, int rows, int columns) {   int i;   if ((*array2D = (int**)malloc(rows * sizeof(int*))) == NULL)     return -1; /* not enough memory. */   if (((*array2D)[0] = (int* )malloc(rows * columns * sizeof(int ))) == NULL)     return -1; /* not enough memory. */   for (i=1 ; irows ; i++)     (*array2D)[i] = (*array2D)[i-1] + columns ;   return rows * columns * sizeof(int); } 3. 什么是可重入函数?编写可重入函数应注意哪些事项? 可重入函数是指能够被多个线程“同时”调用的函数,并且能保证函数结果的正确性的函数。在编写可重入函数时通常要注意如下的一些问题: 1). 尽量不要使用全局变量,静态变量,如果使用了应该注意对变量访问的互斥。通常可以根据具体的情况采用信号量机制、关调度机制、关中断机制等方式来保证函数的可重入性。 2). 不要调用不可重入的函数,调用了不可重入的函数会使该函数也变为不可重入的函数。 3). 注意对系统中的临界资源、互斥资源的访问方式,防止使函数成为不可重入的函数。 4). 一般驱动程序都是不可重入的函数,因此 在编写驱动程序时一定要注意重入的问题。 4. 下面定义的2个变量str1和str2有什么不同?   char (*str1)[256];   char *str2[256]; str1是一个数组指针,即指向数组的指针。 str2是一个指针数组,其元素为指针型数据。 5. 一个单向链表,不知道头节点,一个指针指向其中的某一个节点,请问如何删除这个指针所指向的节点? 将这个指针指向的next节点值copy到本节点,将next指向 next-next,并随后删除原next指向的节点。 6. 在不使用第三个变量的情况下,用宏定义写出SWAP(x, y)。   #define SWAP(x, y

文档评论(0)

vbc516 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档