![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
科技扶贫办
文章平均质量分 72
youmengying
这个作者很懒,什么都没留下…
展开
-
习惯于写文档
在工作、日常生活中,经常会遇到各种各样的问题、产生一些很有用的想法,如果能够把这些想法及时的记录下来,在以后能够经常翻阅,那么这些记录无疑是一笔巨大的财富!原创 2009-08-05 09:28:00 · 323 阅读 · 0 评论 -
VC编程小技巧20个
一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsV转载 2009-08-18 22:13:00 · 331 阅读 · 0 评论 -
谈C/C++指针精髓(1)[转帖]
[摘要] 指针是C和C++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构, 通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C和C++语言的功能。在本文中,主要分两部分对指针进行讨论。首先,基础篇讨论关于指针的内容和运算操作等,转载 2009-08-21 08:53:00 · 392 阅读 · 0 评论 -
整数类型的储存
C中的16进制表示 C中需要在前面加0x来表示。这个以后我们会经常用到。 整数类型的储存 计算机如何处理有正负符号的整数类型呢?下面程序是考察16位整数的储存方式。 #include int main(){ short int a, b; a = 0x0000; b = 0x0001; printf( "%d %d ", a, b );原创 2009-08-22 11:46:00 · 741 阅读 · 0 评论 -
全局变量、局部变量、extern
全局对象是一个运行时刻实体,它在程序的整个执行过程中都存在。全局对象占据的存储区的生命期(lifetime) 从程序启动开始在程序终止时结束。 全局对象和非inline 全局函数在一个程序内只能被定义一次。而只要给出的定义完全相同即可inline 函数可以在一个程序中被定义多次。这要求全局对象和函数或者只有一个定义,或者在一个程序中有多个完全相同的定义,这样的要求被称为一次定义法则ODR(o转载 2009-08-21 08:52:00 · 2490 阅读 · 0 评论 -
谈C/C++指针精髓(2)[转帖]
1.3指针与内存管理 利用指针你可以将数据写入内存中的任意位置,但是,一旦你的程序中有一个野指针("wild”pointer),即指向一个错误位置的指针,你的数据就危险了—存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会被破坏,甚至操作系统的数据也可能会被修改,有时,上述三种破坏情况会同时发生。所以合理的正确的分配指针的地址是非常重要的。 1.3.1内存分配的方式内存转载 2009-08-21 08:54:00 · 388 阅读 · 0 评论 -
C/C++位操作简介
位简介 位,它是什么?你可能会问。 简单来说,位就是1和0,在电脑中做的每一件事都是由它们组成的。电脑中所有的数据使用的是位。一个字节由8个位组成;一个字由两个字节组成,即16个位;而一个双字由四个字节组成,即32个位。 0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0||原创 2009-08-22 11:42:00 · 417 阅读 · 0 评论 -
字符、字符数组、char、string的区别分析
【规则】1、string为普通类型,不是数组型,只是其内容为字符串;2、’a’和”a”的区别:’a’为字符,”a”为字符串;单引号只能定义一个字符,双引号可以定义多个字符,即字符串。3、指针可以通过加减、自加减改变其值,数组不可以。4、以数组定义的字符串可以修改其中的字符,以指针定义的字符串不能修改其中的字符。 例如:char a[]=”hello”;coutcoutcoutcoutcoutcou转载 2009-08-21 08:42:00 · 827 阅读 · 0 评论 -
谈C/C++指针精髓(3)[转帖]
1.4指针的运算 1.4.1赋值运算指针变量的赋值运算有以下几种形式:1.4.1.1指针变量初始化赋值如下: int a;int *ip=&a;1.4.1.2把一个变量的地址赋予指向相同数据类型的指针变量。例如: int a;int *ip;ip=&a; //把整型变量a的地址赋予整型指针变量ip1.4.1.3把一个指针变量的值赋予指向相同类型变转载 2009-08-21 08:55:00 · 417 阅读 · 0 评论 -
C/C++关于string.h头文件和string类
1.C的字符串头文件是,在C++里这个文件变成了,string前面的c表示这个是c语言的;而C++的字符串头文件是,是利用的模板实现的,跟原先C的实现方法不一样,但要安全得多。2.VC++中有文件,它就是C中的那个; 而文件实际上只是在一个命名空间std中include了,这是因为C++要减少名称污染; 所以两个都是可以用的,但C++鼓励用。 为字符串实现了一个类,而其实是依靠模板做的,这个可转载 2009-08-25 09:54:00 · 22651 阅读 · 1 评论 -
CString基本操作
本文解释基本的 CString 操作,包括: 从标准 C 字符串创建 CString 对象 访问 CString 中的单个字符 串接两个 CString 对象 比较 CString 对象 CString 类提供成员函数和重载运算符,它们可以复制(在某些情况下甚至超越)C 运行时库的字符串服务(例如 strcat )。 从标准 C 字符串创建 CString 对象原创 2009-08-25 08:56:00 · 856 阅读 · 0 评论 -
ini配置文件常用的四个函数
虽然ini配置文件正在逐渐地被注册表所代替,在MSDN中也说明操作ini文件的API函数都是为了兼容16位的,但ini文件并没有退出舞台,还是广泛地应用于软件开发中。下面为我日前写小程序时因为要操作到ini文件而整理的四个常用API函数。现在网上关于这方面的资料也很多,也有较多的免费CIniFile类。...[student]name1=xuzhihongname2=chenxiuqi原创 2009-08-28 17:09:00 · 1010 阅读 · 1 评论 -
C++ string CString 详解
前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函数 1.3 string insert, replace, erase 2 string 和 C风格字符串 3 string 和 Charactor Traits 4 string 建议 5 小结 6 附录前言: string 的角色C++ 语言是个十分优秀的转载 2009-08-19 17:32:00 · 1568 阅读 · 0 评论 -
程序员的十层楼
自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。 那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有转载 2009-08-18 22:26:00 · 336 阅读 · 0 评论 -
程序员应具有的素质
程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立,到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数据营销平台的搭建,程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大的贡献。 中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印转载 2009-08-05 09:41:00 · 323 阅读 · 0 评论 -
关于快速排序算法
关于“快速排序”算法,网上已经流行有很多个版本,但是有些版本存在问题,比如给这样的一个测试用例:{5, 9, 8, 7, 6, 5, 5, 5},有些版本就得不到正确的结果,究其原因,多种多样,其中有的原因就是因为对数组扫描的时候产生“数组越界”、两个数相等的时候没能作出正确的操作,等等。 以下我写的这个“快速排序”算法,经过不同情况的测试用例检测,都达到预期效果。原创 2009-08-05 09:47:00 · 787 阅读 · 2 评论 -
解析#pragma指令
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。(1)转载 2009-08-07 15:41:00 · 332 阅读 · 0 评论 -
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库。 和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的程序别人在使用你的代码的时候就不用再设置工程settings了。 手工设置的步骤如下快捷键“Alt+F7”进入工程设置之后,LINK-----OBJECT/LIBRARY MODULES里面设置有一样的效果原创 2009-08-10 12:13:00 · 2824 阅读 · 0 评论 -
Windows Socket五种I/O模型
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综转载 2009-08-10 12:20:00 · 311 阅读 · 0 评论 -
SOCKET 编程基础
(TCP)服务器端SOCKET第一步:初始化套接字库第二步:创建套接字第三步:绑定套接字第四步:将该套接字置为监听状态第五步:接收客户端传来的连接请求(TCP)客户端SOCKET第一步:初始化套接字库第二步:创建套接字第三步:绑定套接字第四步:向服务器端发送连接请求 (UDP)服务器端SOCKET第一步:初始化套接字库第二步:创建转载 2009-08-10 12:31:00 · 564 阅读 · 0 评论 -
完成端口使用总结
本文不是全面介绍完成端口的,只是简单介绍了一下完成端口和几个常用概念。本文主要关注完成端口关闭时资源释放问题。基础介绍 完成端口——可能是Win32下最复杂的一种I/O模型,Win32下最复杂的内核对象。它通过指定数量的线程对重叠I/O请求进行管理,以便为已经完成的I/O请求提供服务,相对其它I/O模型,它管理任意数目I/O套接字。假若一个应用程序同时需要管理为数众多的套接字,那么采原创 2009-08-11 10:02:00 · 690 阅读 · 0 评论 -
#ifndef#define#endif的用法(整理)
文件中的#ifndef 头文件中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef #define转载 2009-08-07 15:44:00 · 359 阅读 · 0 评论 -
Windows网络编程示例二——反应式echo服务器
/************************************************************************//* 代码组织上不是很合理,很多细节没有注意,/* 只是作为一个演示记下反应式I/O的一种使用模式,通过telnet作为客户端演示之/***********************************************************转载 2009-08-11 10:09:00 · 465 阅读 · 0 评论 -
error LNK2001: unresolved external symbol _main解决办法
解决外部符号错误:_main,_WinMain@16,__beginthreadex ) 在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数,就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _转载 2009-08-12 12:18:00 · 1088 阅读 · 0 评论 -
Socket,CAsyncSocket,CSocket介绍
Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别。虽然同步好用,不费劲,但不能满足一些应用场合,其效率也很低。 也许初涉编程的人不能理解"同步(或阻塞)"和"异步(或非阻塞)",其实简单两句话就能讲清楚,同步和异步往往都是针对一个函数来说的,"同步"就是函数直到其要执行的功能全部完成时才返回,而"异步"则转载 2009-08-12 15:14:00 · 508 阅读 · 0 评论 -
VC中生成的各个文件的作用
.dsp -- 工程文件,文本格式,不可丢失或损坏 .dsw -- 工作区文件,丢失或损坏时,可点击.dsp文件打开工程,.dsw文件自动重建 .clw -- ClassWizard信息文件,ini格式,ClassWizard出问题时可删除它再重建 .map -- 映像信息文件,编制DLL写.def文件时,若不知道函数导出顺序,可在转载 2009-08-15 13:53:00 · 455 阅读 · 0 评论 -
用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall
今天使用 CreateThread 方法创建线程遇到问题,后解决,记录下解决方案—— 问题:用VC创建新线程易出的问题error C2664: CreateThread : cannot convert parameter 3 from unsigned long (void *) to unsigned long (__stdcall *)(void *) 解决方原创 2009-08-15 16:39:00 · 4531 阅读 · 0 评论 -
CString,int,string,char*之间的转换
string 转 CString CString.format("%s", string.c_str()); char 转 CString CString.format("%s", char*); char 转 string string s(char *); string 转 char * char *p = string.c_str(); CString 转 string s转载 2009-08-19 17:30:00 · 392 阅读 · 0 评论 -
C/C++中的字符串分割
关键字: 字符串分割字符串按照特定字符进行分割是编程时候经常要用到方法 MFC中CString 和std::string 常可以用 find() + Mid() 的方法来实现 CString实现: Cpp代码 inline static void split(CString src, CString token, vector& vect)转载 2009-08-20 10:24:00 · 11440 阅读 · 2 评论