山东公选网,不要人夸颜色好,爱滕网
问题一:确定一个变量是有符号数还是无符号数:unsigned int a = 0; if(a < a-1) { printf("/nunsiged"); }else{ printf("/nsigned"); }分析:如果a为有符号数:那么0<-1不成立,则会打印signed;
通过概率的计算,你会发现每个字符被选中的概率是一样的,并且是随机的,因为有可能选中的是第一个字符,也可能是最后一个,或者是其中任意一个。这和抽签的原理是一样的,想想是不是这样!
问题四:文件描述符与文件指针的区别
在linux系统中把设备和普通文件都看做是文件,要对文件操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值,是一个小整数,其值在(0-255)之间。每个进程PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。所以文件描述符就是开放文件每个进程表的一个偏移量(如"3"),用于文件标示。
缺点:系统I/0调用有create(),open(),read(),write(),close()等。它们不是ANSI C的一部分,所以移植性差,不能存在于非UNIX环境。但是现在的ANSI C规定所有的编译器环境都必须支持它们。
文件指针:C语言中使用文件指针做I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符。而文件描述符是文件描述符表的一个索引,因此某种意义上说文件指针就是句柄的句柄,在windows系统中文件描述符被称作文件句柄。所以FILE指针保存了一个FILE结构的地址。
FILE结构中含有文件描述符,那么可以使用fopen来获得文件指针,然后从文件指针获取文件描述符,文件描述符应该是唯一的,
而文件指针却不是唯一的,但是指向的对象是唯一的。
FILE的结构
struct _iobuf { char *_ptr; //缓冲区当前指针 int _cnt; char *_base; //缓冲区基址 int _flag; //文件读写模式 int _file; //文件描述符 int _charbuf; //缓冲区剩余自己个数 int _bufsiz; //缓冲区大小 char *_tmpfname; };C语言文件指针与文件描述符之间可以相互转换:
int fileno( FILE *stream );//fileno()用来取得参数stream指定的文件流所使用的文件描述符。 FILE *fdopen(int fd,const char *mode);//创建一个新的FILE结构,并把它与一个确定的文件描述符相关联。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论