摘要: 我学习C语言的时候,遇到的一个问题就是 EOF。 它是 end of file 的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。 比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。int c;while ((c = fgetc (fp)) != EOF) { putchar (c);} 很自然地,我就以为,每个文件的结尾处,有一个叫做 EOF 的特殊字符,读取到这个字符,操作系统就认为文件结束了。 但是,后来我发现,EOF 不是特殊字符,而是一个定义在头文件 s 阅读全文
posted @ 2012-04-22 20:49 arrow' 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 你的整个硬件是由核心来管理的,而如果核心不认识你的硬件,那么你将无法使用该硬设备,例如上面提到的 NTFS 档案格式的硬盘!核心就是『 Kernel 』,他是一个操作系统的最底层的东西,由他来掌管整个硬件资源的工作状态,而 Linux 有 Linux 自己的核心, Windows 也有他自己的核心。所以说,当有新的硬件加入到你的系统中的时候,那么若你的『 Kernel 』并没有支持他的时候,呵呵,这个新的硬件就肯定无法工作的,因为控制他的 Kernel 并不认识他呀!这样了解了吗?!先有个概略性的了解,后面我们提到『核心编译』的时候会在更详细的谈到他!一般来说,Kernel 管理的事项有:.. 阅读全文
posted @ 2012-04-08 23:23 arrow' 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1、介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2、应用环境 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。3、基本操作 使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都... 阅读全文
posted @ 2012-04-04 20:20 arrow' 阅读(215) 评论(0) 推荐(0) 编辑
摘要: a+++++b表示什么含义? 自己编译了一下,int main(){ int a = 0; int b = 0; int c = 0; c = a+++++b; printf (" a+++++b The result is %d",c); return 0;}error C2105: “++”需要左值。 网上查了一下,左值就是可以在"="左边,能被赋予值的东西;右值则是在"="右边,可以赋值给别人的东西。所以左值必须是有内存空间的东西;而右值则既可以是变量,也可是常量和某种表达式,只要能提供一个值即可。 为什么a+++++b会编译错 阅读全文
posted @ 2012-03-11 22:21 arrow' 阅读(2655) 评论(0) 推荐(0) 编辑
摘要: (*(void(*)())0) (); 在《C陷阱与缺陷》中解释如下: float f,g; //表达式f、g的类型为浮点型 float ff(); //表达式ff()的求值结果为浮点型 float *pf; //表达式*pf是一个浮点数,pf是一个指向浮点数的指针 float *g(), (*h) (); // float *g() == float *(g()), g是一个函数,函数的返回类型为一个指向浮点数的指针,h是一个函数指针,h所指向的函数返回类型为浮点型。 float (*h) (); // 表示h是一个指向返回值为浮点类型的函数的指针。 (float... 阅读全文
posted @ 2012-03-11 22:04 arrow' 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 2月初的时候接到一个需求,简单点说就是做个动画。 运用多线程的技术,当动画启动的时候,不影响其他画面的表示和押键响应。 A 线程启动后,在某个阶段启动了B线程。 A这里使用main()函数,B这里使用让动画'动'起来的线程animation,那么可以这么做,直接看代码。#include <stdio.h>#include <windows.h>DWORD WINAPI animation();int main(){ char endFlag = 0; CreateThread( NULL // default security attributes ,0 阅读全文
posted @ 2012-02-16 21:54 arrow' 阅读(8316) 评论(0) 推荐(0) 编辑
摘要: 一直有个困扰,用变量做数组长度,C不允许。那么,我想做个变化的数组,怎么办呢? 这周做项目时,有人教了一招,可以“变相”地改变C语言中数组的长度。上代码: 新建一个win32 控制台应用程序,添加main.h、main.c main.h中的代码:int array_c [] = {1,2,3,4,5,6}; main.c中代码:#include "main.h"#define ARRAYLENGTH (sizeof(array_c)/sizeof(int))int main() { int i = 0; for (i = 0;i < ARRAYLENGTH;i++) 阅读全文
posted @ 2011-11-13 22:31 arrow' 阅读(1608) 评论(3) 推荐(0) 编辑
摘要: 一直觉得自己C语言不错,最近在工作中遇到了很多实际的问题,才发现我对C语言的了解还是个门外汉。 藉此,我也做个C语言菜鸟学习系列,就是实际应用中遇到难题的解决方法,方便今后的回顾,菜鸟们可以一起学习一下,有什么不同或者更好的方法,希望不吝赐教。 留此页监督自己,坚持每周一篇,顺便做个目录。 1.C语言数组长度不能改变吗? 2.结构一致的重要性。 3.C语言中多线程的简单例子。 阅读全文
posted @ 2011-11-05 00:33 arrow' 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 1. 不要当“传教士” 很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。 这种争论是浪费时间而没有任何用处的。对,你花了一下午,用许多事实“捍卫”了 “Linux 比 Windows 好” 这个说法。但是 Windows 的支持者并不会喜欢上 Linux,他们只是稍微退缩一下,然后找一些新的证据来跟你辩论。 世界上的人们都在利用 Linux 研究最前沿的科学,我们还在这里讨论 “要不要用 Linux” 这种无聊的问题,什么时候才能赶上时代前进的步伐? 什么叫做“Windows 支持者”,什么叫做“Linux 支 阅读全文
posted @ 2011-10-31 23:59 arrow' 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 今天登陆博客园,发现最近的随笔是2010年11月的,整一年,我在做什么呢? 开始是忙着找工作; 忙着培训; 忙着毕业; 忙着团聚; 忙着分离; 忙着工作; 最近,我发现我没了生活。于是我回来了,来看看博客园,也看看我得到些什么。 毕业论文抄抄写写编编,没收获什么。 培训学到的挺多的,没有系统的整理,现在似乎都没时间来消化。 感情上,探索过、找寻过,也许还在一直找寻,没有收获。 工作,对,工作是重点,我在这上面收获还是很多的,有什么呢?我看看,恩... 编码几乎没有,文档写了很多,RTM,DD,PR,DR等等。也许文笔不再那么口语化了。对业务的了解也有一些提升。但本身... 阅读全文
posted @ 2011-10-29 02:22 arrow' 阅读(130) 评论(0) 推荐(0) 编辑