给初学者解释程序设计中内存外存的利用

【来信】

老师您好:

  我也是一名初学C++的学生,从这学期开始也一直都在跟着您学习,今天看到您的文件+结构体这个项目,关于后边的选择30名同学发奖学金,我有新的想法就是把之前排好序的信息存储到一个新的文件中,然后再从这个新文件中取数据判断,因为自己是初学者,虽然实验了几个数是成功的,可还是想请教一下老师,我不太懂的是为什么排好序之后的数据可以保存生成新的文件,在程序运行中这些中间数据是存储在哪里的呢?一直到程序结束,是不是他们一直都在呀?还有就是在向文件中存储数据的时候为什么数据一定是要分行的?麻烦老师了,还请老师赐教!

【回复】
  需要了解一下计算机的存储系统。计算机的存储系统包括内存、外存两部分(缓存之类的,学计算机组成时再说)。内存小,快,断电就没了;外存指磁盘等,慢,很大,断电后还在。文件就存在在外存上。程序运行中,将文件中的数据读入,就是从外存的文件中,读到了内存里。对于这个程序而言,定义了数组,数组分配在内存里(所以访问起来很快),读入的数据就在内存中的这一段空间里了。只要数组在其作用范围内,就一直能够访问。
  文件中存储的数据并不一定分行,各个数据用空格隔开,或者用Tab(\t)隔开都可以,这和键盘输入,显示器输出的要求一样,请参考相关资料。

  你的方法将中间结果保存到文件中,这是可行的,但却不常用。原因是中间结果在外存,速度会慢,也是对磁盘无意义的磨损,就让它在内存中待着好了,避免了频繁地访问磁盘还速度快,何苦而不为?

  

china-pub(正在发售)
卓越网(接受预订) 
图灵社区  官方试读本下载
豆瓣

==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======

  
    

时间: 2024-11-02 09:44:58

给初学者解释程序设计中内存外存的利用的相关文章

浅谈ASP程序设计中数据库文件调用的捷径

程序|设计|数据|数据库 引言 本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧. ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的

Visual C++程序设计中Windows GDI贴图闪烁的解决方法_C 语言

本文实例讲述了Visual C++程序设计中Windows GDI贴图闪烁的解决方法.分享给大家供大家参考.具体如下: 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一: 如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕 上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期. 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的. 这样

数据库程序设计中的约束、触发器和存储过程

上篇博客中所说的对于表操作的几种限制少分析了触发器.这次从对表设计的角度来着重分析约束和触发器的关系,并进一步扩展比较触发器和存储过程.但在看该篇博客前强烈建议大家好好读下我的上一篇博客<约束与数据库对象规则.默认值的探究> 首先,从图上来比较三者的关系: 触发器不仅能够保证数据的完整性,而且还可以封装复杂的T-SQL逻辑处理语句,在功能上类似于存储过程,所以触发器又是一种特殊的存储过程.但是存储过程的执行是我们使用Exec主观调用的,而触发器是经过一种事件操作后自动被调用的. 在拆开分析约束

VC++中内存对齐实例教程_C 语言

内存对其是VC++程序设计中一个非常重要的技巧,本文即以实例讲述VC++实现内存对其的方法.具体分析如下: 一.概述 我们经常看到求 sizeof(A) 的值的问题,其中A是一个结构体,类,或者联合体. 为了优化CPU访问和优化内存,减少内存碎片,编译器对内存对齐制定了一些规则.但是,不同的编译器可能有不同的实现,本文只针对VC++编译器,这里使用的IDE是VS2012. #pragma pack()是一个预处理,表示内存对齐.布局控制#pragma,为编译程序提供非常规的控制流信息. 二.结构

网络程序设计中的模块化思维

程序|设计|网络 首先,以实际例子说明模块化对于程序编写的重要性.例子就是我们现在采用的动网论坛 1 论坛的配色是一个论坛保持活力的基础,一个好的配色意味着一个论坛成功了一半.但我认为动网论坛的配色是及其浪费资源的,同时后台操作也异常麻烦.首先,它将CSS的各个定义部分存储到数据库,在打开页面时再调用,如--------------------------<%'打开数据库代码省略dim bgcolor1bgcolor1=rs("bgcolor1")rs.closeset rs=n

在ASP程序设计中在使用Response对象 2003

response|程序|对象|设计 Response对象在ASP程序设计中的主要功能是从浏览器端到服务器端传送数据到浏览器的客户端,我们知道ASP的脚本是在服务器端执行的,他并没有输出"值"的功能.要想拥有输出"值",就必须依靠Response对象. 在这里我们将关注其最常用的一些功能.也就是在程序设计中经常要用到的一些功能,具体如下: (1).response.write 发送信息到浏览器 (2). response.end 有效地中止代码 (3).respons

在ASP程序设计中在使用Response对象

   Response对象在ASP程序设计中的主要功能是从浏览器端到服务器端传送数据到浏览器的客户端,我们知道ASP的脚本是在服务器端执行的,他并没有输出"值"的功能.要想拥有输出"值",就必须依靠Response对象. 在这里我们将关注其最常用的一些功能.也就是在程序设计中经常要用到的一些功能,具体如下: (1).response.write 发送信息到浏览器 (2). response.end 有效地中止代码 (3).response.redirect 页面重定

嵌入式实时程序设计中C/C++代码的优化

1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用. 嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体.具有软件代码小.高度自动化.响应速度快等特点. 特别适合于要求实时和多任务的应用体系.嵌入式实时系统是目前蓬勃发展的行业之一. 但是,实时嵌入式系统的特点使得其软件受时间和空间的严格限制,加上运行环境复杂,使得嵌入式系统软件的开发变得异常困难. 为了设计一个满足功能.性能和死线要求的系统,为了开发

在ASP程序设计中使用Response对象

Response对象在ASP程序设计中的主要功能是从浏览器端到服务器端传送数据到浏览器的客户端,我们知道ASP的脚本是在服务器端执行的,他并没有输出"值"的功能.要想拥有输出"值",就必须依靠Response对象. 在这里我们将关注其最常用的一些功能.也就是在程序设计中经常要用到的一些功能,具体如下: (1).response.write 发送信息到浏览器 (2). response.end 有效地中止代码 (3).response.redirect 页面重定向 如