
c语言
文章平均质量分 71
CrazyFox%
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计算机导论——第37章 磁盘驱动器
关键问题:如何存储和访问磁盘上的数据现代磁盘驱动器如何存储数据?接口是什么?数据是如何安排和访问的?磁盘调度如何提高性能?原创 2023-12-01 20:53:10 · 602 阅读 · 0 评论 -
操作系统导论——第36章 I/O设备
之所以使用分层,这是由于成本和效率之间的平衡。原创 2023-12-01 17:51:36 · 1092 阅读 · 0 评论 -
C陷阱与缺陷——第8章建议
6. 注意潜伏在暗处的Bug,坚持只使用C语言众所周知的部分,避免使用那些生僻的语言特性。4. 考察最简单的特例,当输入数据为空或者只有一个元素时,考虑正确性。7. 防御性编程,对程序用户和编译器实现的假设不要过多。5. 使用不对称边界,C语言下标从0开始。原创 2023-12-01 15:57:19 · 431 阅读 · 0 评论 -
C陷阱与缺陷——第7章可移植缺陷
C程序能够方便地在不同编程环境中移植,但是C语言实现可能有细微差别,会导致可移植问题。可移植性主题内容很多,可以参考《How to Write Portable Software in C》原创 2023-12-01 12:47:06 · 416 阅读 · 0 评论 -
C陷阱与缺陷——第6章 预处理器
(x)((x)-1)空格的规则适用于宏定义,但是不适用于宏调用,所以f(3)和f (3)的结果都等于2宏的一个常见用途是使多个不同变量的类型可在一个地方说明,宏定义的这种用法有一个优点——可移植性。T1 a,b;T2 a,b;其中T1 a,b;这个语句中a被定义为一个指向结构的指针,而b却被定义为一个结构,而不是指针。原创 2023-11-30 16:27:56 · 454 阅读 · 0 评论 -
C陷阱与缺陷——第4章连接
C语言的一个重要思想就是分别编译,即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合在一起,尽管连接器并不理解C语言,然而它却能够理解机器语言和内存布局。编译器的责任是把C源程序翻译成对连接器有意义的形式,这样连接器就能够读懂C源程序了。典型的连接器是把由编译器或者汇编器生成的若干个目标模块,整合成一个被称为载入模块或者可执行文件的实体,该实体能够被操作系统直接执行。原创 2023-11-29 17:56:16 · 432 阅读 · 0 评论 -
C陷阱与缺陷——第3章 语义陷阱
C语言中只有一维数组,而且数组的大小必须在编译器就作为一个常数确定下来,然而在C语言中数组的元素可以是任何类型的对象,当然也可以是另外的一个数组,这样,要仿真出一个多维数组就不是难事。对于一个数组,我们只能够做两件事:确定数组大小;获得指向该数组下标为0的元素的指针。以上语句声明了calendar是一个数组,该数组拥有12个数组类型的元素,其中每个元素都是一个拥有31个整型元素的数组。原创 2023-11-29 16:53:37 · 984 阅读 · 0 评论 -
C陷阱和缺陷第1章——词法陷阱
tips:符号之间的空白,包括空格符、制表符或换行符将被忽略。原创 2023-11-27 15:27:38 · 397 阅读 · 0 评论 -
C陷阱与缺陷——第2章语法陷阱
硬件将调用首地址为0位置的子例程任何C变量的声明都由两部分组成:类型以及一组类似表达式的声明符,声明符从表面看与表达式有些类似,对它求值应该返回一个声明中给定类型的结果。(*fp)();ANSI C标准允许程序员将上式简写为fp(),但是一定要记住这种写法只是一种简写形式。我们一旦知道如何声明一个变量,也就自然知道如何对一个常数进行类型转换,将其转型为该变量的类型:知需要在变量声明中将变量名去掉即可。原创 2023-11-28 14:26:22 · 497 阅读 · 0 评论 -
C语言灵活的指针表达式 左值 右值
0. 参考资料《C和指针》1. 初始状态char ch = 'a';char *cp = &ch;其中?表示后面的数据内容未知2. ch其中ch当作右值就是表达式的值a,使用粗椭圆提示;其中ch当作左值时就是内存地址,使用粗方框表示3. &ch右值表示变量ch的地址,这和cp存储的值是一样的,但是这个表达式并没有通过cp产生,因此椭圆和cp没有关系左值非法,原因是&ch求值时结果存放在计算机未知的位置,未标识...原创 2021-10-14 19:45:00 · 640 阅读 · 0 评论 -
C++不定数量字符串输入例子
输入N1 N2 N3N2输出:1 2 3del: 2代码#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;int main() { // 1.输入数据 int inputs[100]; int del; char item[10]; char number[10]; int sz = 0; while原创 2021-09-15 20:37:54 · 1303 阅读 · 0 评论 -
操作系统导论第30章——条件变量总结
1. 提出背景如何实现父线程等待子线程的join功能?基于自旋的方式可以实现,代码如下:#include <pthread.h>#include <cstdio>volatile int done = 0;void* child(void* arg) { printf("child\n"); done = 1; return NULL;}int main() { printf("parent:begin\n"); pthread_t原创 2021-08-21 16:36:57 · 1342 阅读 · 1 评论