[工学]2011年计算机等级考试二级C语言常见问题汇总.doc

[工学]2011年计算机等级考试二级C语言常见问题汇总.doc

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]2011年计算机等级考试二级C语言常见问题汇总

2011年计算机等级考试二级C语言常见问题汇总 第1?章 声明和初始化 问题: 1.1?我如何决定使用那种整数类型? 1.2 64 位机上的64 位类型是什么样的? 1.3 怎样定义和声明全局变量和函数最好? 1.4 extern 在函数声明中是什么意思? 1.5 关键字auto 到底有什么用途? 1.6 我似乎不能成功定义一个链表。我试过typedef struct { char *item; NODEPTR next; } *NODEPTR; 但是编译器报了错误信息。难道在C语言中一个结构不能包含指向自己的指针吗? 1.7 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回指向字符的指针的函数的指针的数组? 1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 1.9 main() 的正确定义是什么?void main() 正确吗? 1.10 对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”, 它可否作为空指针或浮点零? 1.11 代码int f() { char a[] = Hello, world!;} 不能编译。 1.12 这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。 1.13 以下的初始化有什么区别? char a[] = string literal; char *p = string literal; 当我向p[i] 赋值的时候, 我的程序崩溃了。 1.14 我总算弄清除函数指针的声明方法了, 但怎样才能初始化呢? 第2 章 结构、联合和枚举 问题列表 2.1 声明struct x1 { ... }; 和typedef struct { ... } x2; 有什么不同? 2.2 为什么struct x { ... }; x thestruct; 不对? 2.3 一个结构可以包含指向自己的指针吗? 2.4 在C 语言中实现抽象数据类型什么方法最好? 2.5 在C 中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 我遇到这样声明结构的代码: struct name { int namelen; char namestr[1];}; 然后又使用一些内存分配技巧使namestr 数组用起来好像有多个元素。这样合法和可移植吗? 2.7 是否有自动比较结构的方法? 2.8 如何向接受结构参数的函数传入常数值? 2.9 怎样从/向数据文件读/写结构? 2.10 我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部数据文件进行”二进制” 读写。能否关掉填充, 或者控制结构域的对齐方式? 2.11 为什么sizeof 返回的值大于结构的期望值, 是不是尾部有填充? 2.12 如何确定域在结构中的字节偏移? 2.13 怎样在运行时用名字访问结构中的域? 2.14 程序运行正确, 但退出时却“core dump” 了,怎么回事? 2.15 可以初始化一个联合吗? 2.16 枚举和一组预处理的#define 有什么不同? 2.17 有什么容易的显示枚举值符号的方法? 第 3 章 表达式 问题列表: 3.1 为什么这样的代码: a[i] = i++; 不能工作? 3.2 使用我的编译器,下面的代码int i=7; printf(%d\n, i++ * i++); 返回49?不管按什么顺序计算, 难道不该打印出56吗? 3.3 对于代码int i = 3; i = i++; 不同编译器给出不同的结果, 有的为3, 有的为4, 哪个是正确的? 3.4 这是个巧妙的表达式: a.=b.=a.=b 它不需要临时变量就可以交换a 和b 的值。 3.5 我可否用括号来强制执行我所需要的计算顺序? 3.6 可是 和|| 运算符呢? 3.7 我怎样才能理解复杂表达式?“序列点” 是什么? 3.8 那么, 对于a[i] = i++; 我们不知道a[] 的哪一个分量会被改写,但i的确会增加1, 对吗? 3.9 ++i 和i++ 有什么区别? 3.10 如果我不使用表达式的值, 我应该用++i 或i++ 来自增一个变量吗? 3.11 为什么如下的代码int a = 100, b = 100; long int c = a * b; 不能工作? 3.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一个。 第 4? 章 指针 问题列表: 4.1 我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么问题?char *p; *p = malloc(10); 4.2 *p++ 自增p 还是p 所指向的变量? 4.3 我有一个char * 型指针正巧指向一些int 型

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档