摘要: 学过程序语言的人相信对关键字并不陌生。偶然间翻起了《C++ Primer》这本书,书中列举了所有C++的关键字。我认真核对了一下,竟然发现有若干个从未使用过的关键字。一时间对一个学了六年C++的自己狠狠鄙视了一番,下决心一定要把它们搞明白!图1红色字体给出的是我个人感觉一般大家都会比较陌生的关键字,下边我们逐个学习。图1 C++ 关键字一、typeid从名字直观看来,该关键字应该是获取语言元素的类型ID。其实它和sizeof类似,是一个类型运算符。有时候代码可能需要获取某个变量或者类型的名字,这时候使用typeid就比较合适。使用格式:typeid(int)或typeid(i+1)这样操作后. 阅读全文
posted @ 2013-07-19 23:07 ~风~ 阅读(371) 评论(1) 推荐(1) 编辑
摘要: 好吧,头文件是干嘛的?放心,这个简单的问题确实把我难住了。用了多少年头文件,头文件是干嘛用的?第一,头文件是给别人看得。第二,头文件可以用来进行类型检查,减少出错。好吧,第二点我似懂非懂,所以只说第一点。再配合extern。他们俩在一起很万恶的。真的哦!头文件是给别人看的。不管是C还是C++,你把你的函数,变量或者结构体,类啥的放在你的.c或者.cpp文件里。然后编译成lib,dll,obj,.o等等,然后别人用的时候 最基本的gcc hisfile.cpp yourfile.o|obj|dll|lib 等等。ok,他们怎么知道你的lib,dll...里面到底有什么东西?要看你的头文件。你的. 阅读全文
posted @ 2013-07-19 11:17 ~风~ 阅读(3399) 评论(0) 推荐(0) 编辑
摘要: ---------------------------------------------------- | 问题描述一:(分析scanf()和getchar()读取字符) | ----------------------------------------------------scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的。但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因。下面先看一个很简单的程序: 程序1: #include int main() { char ch1, ch2; scanf("%c" 阅读全文
posted @ 2013-06-24 23:11 ~风~ 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 标准I/O函数库: C标准库提供了文件的标准 I/O 函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案。标准I/O库使 用简单,与系统调用I/O相似,也包括打开、读写、关闭这些操作,主要的函数列举如下。 ◆ 打开与关闭文件:fopen,fclose。 ◆ 读写文件:fread,fwrite。 ◆ 读写文本行:fgets,fputs。 ◆ 格式化读写:fscanf,fprintf。 ◆ 标准输入输出:printf,scanf。 ◆ 读写字符:fgetc,getc,getchar,fputc,putc,putchar。 ◆ 其他:fflush,fseek。 所谓... 阅读全文
posted @ 2013-06-24 15:04 ~风~ 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 查看 stdio.h 可以看到如下定义:#define EOF (-1)#define _IOEOF 0x0010#define feof(_stream) ((_stream)->_flag & _IOEOF)由此可以看出,这两种方式的原理是不同的。在这里先说下EOF和feof()这个两个宏定义,在我们学的课本中有这样的描述。EOF是不可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现-1,因此EOF定义为-1是合适的。当读入的字符值等于EOF 时,表示读入的已不是正常的字符而是文件结束符,但这适用对文本文件的读写。在二进制文件中,信息都是以数值方式存在的。EO 阅读全文
posted @ 2013-06-23 15:08 ~风~ 阅读(782) 评论(0) 推荐(0) 编辑
摘要: 一).一般问题 二进制文件与我们通常使用的文本文件储存方 式有根本的不同。这样的不同很难用言语表达,自己亲自看一看,理解起来会容易得多。因此,我推荐学习二进制文件读写的朋友安装一款十六进制编辑器。这样的 编辑器有很多,在我们的CVF附带的集成开发环境下就可以(将二进制文件拖动到IDE窗口后松开)。VisualStudio2005也是 可以的。(不过需要在File菜单下Open,File) 另外推荐一款使用较多的软件,叫做UltraEdit(以下简称UE)。是很不错的文本编辑器,也能做十六进制编辑器使用。 为什么要用十六进制编辑器?而不用2进制呢?因为2进制实在太小,书写起来会很长,很不... 阅读全文
posted @ 2013-06-23 14:40 ~风~ 阅读(1369) 评论(0) 推荐(0) 编辑
摘要: 一、百度知道有人提问http://zhidao.baidu.com/question/59472152“java为什么要定义接口,“当一个类实现一个借口时,它必须实现接口中定义的所有方法”。这个是教材上面说的,那么为什么要定义一个接口呢,所有的方法不都是在类中实现的吗,只不过在类中把接口中的方法头部照抄一遍罢了?意思就是为什么要用类去实现只有方法头部而没有方法体(一个空壳)的接口”回答1.1接口的作用是实现多重继承 因为只能继承一个类(规定的)2 LZ的意思是接口定义的方法,在实现它的子类中有了,不是重写了吗?它存在的意思是抽象出来了。类似于目录吧!让人更清晰!回答2.建议你看一看api帮助. 阅读全文
posted @ 2013-05-26 15:26 ~风~ 阅读(5377) 评论(0) 推荐(0) 编辑
摘要: 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。 Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。 要想序列化对象,你必须先创建一个OutputStream,然后把它嵌进ObjectOutputStream。这时,你就能用writeObject( )方法把对象写入Out 阅读全文
posted @ 2013-05-26 13:27 ~风~ 阅读(137) 评论(0) 推荐(0) 编辑
摘要: Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。使用建议:在两个或者更多的线程访问的成员变量上使用vol. 阅读全文
posted @ 2013-05-26 13:20 ~风~ 阅读(170) 评论(0) 推荐(0) 编辑
摘要: C++的四个类型转换运算符已经有很久了,但一直没有弄清楚它们的用法,今天看到一本书上的解释,才大致地的了解了其具体的用法.具体归纳如下:reinterpret_cast该函数将一个类型的指针转换为另一个类型的指针.这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到.reinterpret_cast 可以将指针值转换为一个整型数,但不能用于非指针类型的转换.例://基本类型指针的类型转换double d=9.2;double* pd = &d;int *pi = reinterpret_cast<int*>(pd); //相当于in 阅读全文
posted @ 2013-04-18 21:31 ~风~ 阅读(255) 评论(0) 推荐(0) 编辑