缓冲区

缓冲区

缓冲区又称缓存,是内存空间的一部分,计算机预留出一部分空间,用来暂时保存输入输出的数据,这部分空间就叫做缓冲区。

​ 我们知道电脑CPU的速度远大于人敲击键盘的速度,还有读写硬盘、向显示器输出的速度,也就是远大于IO的速度,为了提高效率,让CPU更好的得到利用,就引入了缓冲区的概念。

​ 有了缓冲区,将数据先放入缓冲区,等到一定的时机再拿出来,这样不仅提高了CPU的效率,也减少了程序的等待时间。

​ 而且每一次由用户程序到硬件设备都要进行好几层转换,放入缓冲区,就大大减少了转换的次数。

缓冲区的类型

​ 一般分为全缓冲、行缓冲、不带缓冲

全缓冲

​ 缓冲区被填满后才进行真正的输入输出操作,典型代表是:对硬盘的读写。

行缓冲

  • Linux下的printf函数
printf("Hello, ");
sleep(5);
printf("World!\n");

​ 执行上面的操作我们可以看到程序是暂停了5秒钟,一起输出了Hello, World! 是因为第一个printf函数没有遇到换行符,就将字符串放入缓冲去,去执行下一句操作,直到在第二条语句才遇到换行符,这个时候刷新缓冲区,将缓冲区的数据一块打印。

  • scanf函数

对于scanf函数,不管用户输入多少内容,只要不按下回车键,就不进行真正的读取,所以scanf函数是带有行缓冲的函数。

不带缓冲

不缓存数据,直接进行输入输出。

  • getche(), 和 getch()函数,不缓存数据
  • windows下的printf()函数,不管最后有没有换行符,都会立即输出。

缓冲区的刷新

  • 缓冲区满时会自动刷新
  • 关闭文件时会刷新缓冲区
  • 程序关闭时也会刷新缓冲区
  • 特定函数会手动刷新缓冲区——fflush(stdout)。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值