突然觉得自己看了很多别人写的东西,学到很多,可惜以后每次都遇到问题忘了又得去网上一通乱找,还找不到自己当初看的写的较好一些东西资料,索性决定从现在起把自己每天获得的看到的一些东西和总结写到博客里面。
不多说了,接下来开始说主题,探讨下我刚刚收集的一些关于stdin其实是流的资料吧。
简单来说,<stdin>是一个专用的文件句柄。解释下句柄吧(句柄是操作系统在生成对象时分配给对象的唯一标识,句柄不同于指针。如果你得到一个对象的指针,那你就可以对此对象做一切操作!于是系统不给你指针,而是给用户一个加了限制的,用于跟踪对象的指针的标识——句柄!系统使用句柄对外提供服务就相对安全了,操作系统是通过API提供服务的,对于用户来说,句柄等同于对象指针,但实际上句柄和指针不是一回事!)
刚刚看了书,发现自己真是什么都不懂啊,长了很多姿势。(stdin)就是标准输入的意思。就是以终端(计算机)为对象;即从键盘输入数据,运行结果到显示器屏幕上(就叫标准输入输出);再来解释下流的概念(流这个概念也解释不通,各种说法都有,反正我就暂理解为数据传输的字节序列吧)实际上,在内存中为每个数据流开辟一个内存缓冲区,用来存放流中的数据。当你向显示器输出数据时比如用(cout<<),现将这些数据送到程序中的输出缓冲区保存,直到缓冲区满了或遇到endl,就将缓冲区的全部数据送到显示器显示出来。在输入时,从键盘输入的数据先放在键盘缓冲区中,当按回车键时,键盘缓冲区中的数据输入到程序的输入缓冲区里。形成cin流。然后用提取预算符提取数据送给程序的有关变量。总之流是与内存缓冲区相对应的,或者说,缓冲区中的数据就是流。
接下来举几个例子说明:
#include<stdio.h>
int main()
{
char a;
char b;
scanf("%c",&a);
scanf("%c",&b);
printf("%d %d",a,b);
}
当你在键盘按下q之后就会打印出结果:
113 10
出现这个原因就是scanf()函数