posts - 34,comments - 2,trackbacks - 0
     摘要: Style Description
PBS_SMOOTH //平滑
PBS_VERTICAL //垂直
响应消息

PBM_DELTAPOS //一个进度条由一个指定的增量当前位置和重绘栏,以反映新的位置。
wParam=(的WPARAM)nIncrement
lParam = 0;
返回原来的位置。

  阅读全文
posted @ 2011-11-30 20:42 Yu_ 阅读(724) | 评论 (0)编辑 收藏

  和C语言不同,C++对文件的操作有自己的方法。
        C++对文件的操作主要是通过两个类(ofstream---向文件中写入数据。ifstream----从文件中读取数据),通过指定类中的变量取值来达到对文件的操作。
       ofstream类的构造函数(有好几个,这个用的最多)ofstream::ofstream
ofstream( const char* szName, int nMode = ios::out, int nProt = filebuf::openprot )

szName:指定将要打开的文件名

nMode:指定打开的方式,有以下几种取值

 

--------------------------------------------------------------------------------

ios::app   数据始终添加在文件的末尾,文件的指针不移动。比如输入的是123,在文件的末尾出现的是321(先将1插入文件尾,接下来插入2,2在1的前面....)


ios::ate   数据添加在文件的末尾,文件指针会移动,比如输入123,在文件的末尾就出现123.


ios::in   如果指定了此模式,则文件的内容不会被截断


ios::out   打开文件,用于输出,可以用于所有的ofstream对象


ios::trunc   如果文件已经存在,那么文件的内容将被清空


ios::nocreate   打开文件的时候不创建文件,意思是如果文件不存在,则函数失败


ios::noreplace   不覆盖文件,意思是如果文件存在,则函数调用失败。


ios::binary   以二进制方式打开文件,默认是以文本方式打开


--------------------------------------------------------------------------------
nProt:指定文件保护规格说明,有以下几种取值
filebuf::sh_compat   兼容共享模式filebuf::openprot和此种方式一样
filebuf::sh_none   独占模式,不共享
filebuf::sh_read    共享,只读方式
filebuf::sh_write   共享,可以对文件执行写入操作

从文件中读取数据是通过ifstream的对象进行的,其构造函数如下
ifstream::ifstream
ifstream( const char* szName, int nMode = ios::in, int nProt = filebuf::openprot );各参数的意义同上

对于C++的文件操作,需要先构建ofstream和ifstream类的对象,然后通过该对象的成员函数进行文件的读写操作(例如write和read函数)

例子:

#include
#include
#include
using namespace std;

int main()
{
    //打开文件,如果文件不存在则创建文件,然后向文件内写入数据
    ofstream outFile("2.txt",ios::app);
    //将数据写入文件
    outFile.write("c++对文件的操作方法",strlen("c++对文件的操作方法"));
    outFile.close();

    //在文件的末尾写入数据,先将文件的指针移到末尾
    outFile.open("2.txt",ios::app);
    outFile.seekp(0,ios::end);
    outFile.write(",重复写一次:c++对文件的操作方法",strlen(",重复写一次:c++对文件的操作方法"));
    outFile.close();

    //读取文件的内容,并将其显示在屏幕上
    ifstream inFile;
    inFile.open("2.txt",ios::in);
    char buffer[100];
    inFile.read(buffer,99);
    buffer[99]='';
    for(int i=0;i<100;i++)
        cout<<buffer[i];
    inFile.close();

    return 0;
}

posted @ 2011-11-30 20:40 Yu_ 阅读(408) | 评论 (0)编辑 收藏
     摘要: 1、指令: jmp 段地址:偏移地址 ->修改段地址CS和偏移地址 IP
指令: jmp 某一合法寄存器 ->仅修改IP的内容,CS不变、

2、WINDOWS DOS 下的Debug指令
R->查看、改变寄存器内容 “-r” 查看 “ -r ax ” 修改
D->查看内存的内容 ①、“d 段地址:偏移地址 ” 从1000:0处开始显示内存,共128个单元
②、“d 段地址:偏移地址 结尾偏移地址”
E->改写内存的内容 “e 起始地址 数据 数据 数据 ...” 联系改写一系列数据
U->把内存单元翻译成汇编指令 "u 起始地址"
T->执行一条汇编指令
A->命令以汇编指令的形式在内存中写入机器码

  阅读全文
posted @ 2011-11-30 20:35 Yu_ 阅读(454) | 评论 (0)编辑 收藏
     摘要: (1)、成员函数
成员函数有一个非成员函数不具有的属性——它的类itsclass 指向成员函数的指针必须与向其赋值的函数类型匹配不是两个而是三个方面都要匹配:
1 参数的类型和个数2 返回类型3 它所属的类类型

例如类screen:short Screen::*ps_Screen = &Screen::_height;

数据成员指针在被用来访问数据成员之前必须先被绑定到一个对象或指针上

// 所有指向类成员的指针都可以用0 赋值
int (Screen::*pmf1)() = 0;
int (Screen::*pmf2)() = &Screen::height;//或者可以这样写:int Screen::*pmf2 = &Screen::height;
注意:静态类成员指针是该类的全局对象和函数,引用的是普通指针


(2)作用域


1.全局域、类域、局部域的区别

  阅读全文
posted @ 2011-11-30 20:33 Yu_ 阅读(657) | 评论 (0)编辑 收藏
     摘要: 一、类型转换

1、强制类型转换::类型不同,而且不属于基本数据类型(int double...)时,经常需要强制类型转换
①、显示强制类型转换
TYPE b = (TYPE) a;

C++中强制类型转换函数有4个:
const_cast(用于去除const属性),
static_cast(用于基本类型的强制转换),
dynamic_cast(用于多态类型之间的类型转换),

  阅读全文
posted @ 2011-11-30 20:32 Yu_ 阅读(376) | 评论 (0)编辑 收藏
9、写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
注意的是在win32中,sizeof(float)=4。

10、 Internet采用哪种网络协议?该协议的主要层次结构?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层
注意:OSI模型  有7层。应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。(其实不会考的那么简单)

11、Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析協議)MAC--->IP
问题扩展:
DNS 域名解析协议。
什么是ARP?
ARP协议是用来由IP地址获取MAC地址的。通过发送ARP帧。
局域网:向网络上发送一个广播询问某IP地址,网络上其他的IP地址不响应,只有该IP地址的主机会响应并发出数据帧。同时他们都更新ARP表。
不同局域网:发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址,于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况也称为ARP代理(ARP Proxy)
什么是ARP攻击?
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
举一个例子:ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

12、IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
什么是子网掩码?
用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。

13、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline 

解析:
#define MAX(a,b) ((a)>(b)?(a):(b))  
(1)、使用是切勿调用 MAX(a++,b);  这样会可能会使a增值两次。
(2)、没用参数检查。
内联函数:
(1)、在类声明定义的是一个内联函数、

 

posted @ 2011-10-13 21:47 Yu_ 阅读(392) | 评论 (0)编辑 收藏
     摘要: 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法。
  申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
  设定两个指针,最初位置分别为两个已经排序序列的起始位置
  比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
  重复步骤3直到某一指针达到序列尾   阅读全文
posted @ 2011-10-13 19:34 Yu_ 阅读(250) | 评论 (0)编辑 收藏
     摘要: 1、static有什么用途?(请至少说明两种)
(1).限制变量的作用域(变量、函数只能在该文件中使用)
(2).设置变量的存储域 (在全局区分配内存)
  阅读全文
posted @ 2011-10-12 00:21 Yu_ 阅读(678) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2011-10-11 23:43 Yu_ 阅读(640) | 评论 (3)编辑 收藏
     摘要: 1、为什么使用内存池?
通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
  阅读全文
posted @ 2011-10-11 08:45 Yu_ 阅读(400) | 评论 (0)编辑 收藏
仅列出标题  下一页