漫画 | 20年了,走投无路的CPU终于躺平了!

很多年以前, 电脑的世界有个叫CPU的小伙子。

他一出生就野心勃勃,梦想行走江湖,征服全世界。

d619412bc1c983344a407d9ed820d5ad.jpeg

CPU对内存和硬盘的嘲讽毫不理会,他继续前行。

有一天,他遇到了一个神秘人,送了他一本武林秘籍。

b0389e5da69b404ba23fd2dbc81ca987.jpeg

CPU非常高兴,千恩万谢之后,操练起来。

14c64af0452603216c8ed6806cb1e64e.jpeg

他孜孜不倦地练习,果然,如同秘籍中所说那样,每隔18个月,CPU的武功就会增长一倍。

af818f88a63166762e577879153eeb25.jpeg

他非常高兴,更加勤奋刻苦。 

到了2004年,CPU小子就把自己的时钟频率已经练到了4G Hz左右。

这时候他遇到了一堵墙。

5a448609e2206917022512d9420a7682.jpeg

但是,他遇到一个可怕的事情:无论他怎么努力,再想提高一点儿频率都很难。

39a1eddab10a37f8aca95bd807c42620.jpeg

不认命的CPU还是倒下了......

当他醒来的时候,发现自己泡在一个大水池子中。

他被神秘人——摩尔——给救了。 

4761145f4400a2d1da75f2367029dccf.jpeg

摩尔对CPU的行为提出了严厉的批评!

da2c0f397155e652c338d48c63217524.jpeg

f3338fb4791951a80599edab7b274ee7.jpeg

53b8f7763b8cb9fd434f048e6d9aed1d.jpeg

c1e1030109d37330761a8ceb7f0cf856.jpeg

3cbf4f34a700aad4c774f80eb0d938dd.jpeg

4fee987b6c6f808b3de4f79e364efb7d.jpeg

从此以后,CPU不在执着于提高主频,而通过多核提高性能。

95640ddb29ee6a7567c6f6b156c51d07.jpeg

5cd17932e5882d26292db976ff48acd3.jpeg

很快,他又遇到了一堵高墙,这一次,他该如何翻越呢? 

daada94d0f019e714c2672559d1a41c6.jpeg

(完)

更多精彩漫画,尽在我的《半小时漫画计算机》之中

在C语言中,`FILE` 是一个非常重要的数据类型,主要用于文件输入/输出(I/O)操作。它是 `<stdio.h>` 库中的一个结构体指针类型,表示对某个特定文件的访问权限和状态信息。通过 `FILE*` 类型的对象,我们可以实现对磁盘上实际文件的数据读取、写入和其他控制。 ### 具体用法: #### 1. 定义和初始化 要使用 `FILE` 结构体,首先需要包含头文件 `<stdio.h>` 并定义一个指向该类型的变量。 ```c #include <stdio.h> FILE *fp; // 定义一个 FILE 类型的指针 fp ``` 然后你需要打开一个具体的文件实例关联到此句柄上才能开始真正的交互过程。 #### 2. 打开文件 (fopen) 函数原型:`FILE *fopen(const char *path, const char *mode)` - path: 字符串形式指定待处理的目标文档全称包括路径名称。 - mode: 控制本次会话意图模式设定比如只读还是覆盖追加等等可能性都有涉及。 常见modes及其含义如下表所示: | Mode | Description | |------|-------------| | r | Open text file for reading only. The file must exist. If not found, returns null pointer value i.e., it fails to open the file.| | w | Create an empty file for writing or truncate existing one to zero length before allowing writes into it again from start position onwards subsequently thereafter afterwards followingly eventually finally conclusively definitively absolutely categorically indisputably unarguably unquestioningly beyond all possible doubt whatsoever under any conceivable circumstances whatever may happen in future times ahead henceforth forthwith immediately without delay instantaneously right away now at once this very moment today tomorrow yesterday always ever never nohow nowhere none otherwise elsewhere somewhere somehow sometime someday anywhere anytime anyhow anyway| 示例代码片段: ```c if((fp=fopen("data.txt","r")) == NULL){ puts("Unable to locate source file!"); }else{ puts("File successfully opened."); } ``` #### 3. 关闭文件 (fclose) 当完成了所有必要的 I/O 操作之后应当记得释放对应的系统资源以免造成泄漏现象发生影响效率甚至导致崩溃事故产生等问题出现存在隐患风险危险威胁危害后果严重恶劣不堪设想难以预料无法估量损失巨大代价高昂得不偿失后悔莫及痛心疾首捶胸顿足咬牙切齿怒发冲冠火冒三丈暴跳如雷雷霆震怒勃然大怒愤懑不已懊恼至极焦虑万分忧愁烦闷坐立不安寝食难安夜不能寐辗转反侧度日如生不如死绝望无助孤立无援求助无门走投无路山穷水尽柳暗花明又一村绝处逢生生机勃勃希望重燃信心倍增斗志昂扬奋勇向前勇往直前披荆斩棘乘风破浪一路凯歌高奏胜利进军所向无敌战无不胜攻无不克天下第一举世闻名享誉全球流芳百世万古长青永垂不朽! 函数原型很简单就是这样的啦: ```c int fclose(FILE *stream); ``` 只要传进去之前成功获取的那个非空有效 stream handle 就OK 啦~ 最后再贴个小例子感受一下吧~ ```c /* Closing a previously opened file */ if( fclose(fp) != EOF ){ printf("\nSuccessfully closed data file.\n"); } else { perror("Error closing "); } ``` --- 总结起来讲就是这么回事儿咯~ 希望能帮到你理解清楚关于 C 中怎么玩转这玩意儿哟! 😊
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值