- 1、本文档共134页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)