![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C&C++语言
xwdpepsi
积极,努力,认真,负责,诚实
展开
-
C语言编译过程概念解释
http://hi.baidu.com/ilonng/blog/item/e46236dd7dfb29205882dd72.html 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换转载 2011-07-03 16:43:17 · 718 阅读 · 0 评论 -
编程学习的好网站汇总
还不错推荐给大家原文——名称:快速入门地址:http://chs.gotdotnet.com/quickstart/描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示例即看。****************************************************名称:微软官方.NE转载 2013-07-29 09:08:18 · 1075 阅读 · 0 评论 -
vector和list区别【转】
tl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。li转载 2013-08-19 08:20:08 · 642 阅读 · 0 评论 -
vector,map,list,queue区别
1。vector (连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间岁间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,有一个重新分配更大空间,然后拷贝的性能开销.2。deque (小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector快)快速的访问随机的元素,快速的在转载 2013-08-19 08:24:20 · 709 阅读 · 0 评论 -
C++ STL简介
一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的代码从广义上讲分为三类:algorithm(算法转载 2013-08-19 08:28:45 · 561 阅读 · 0 评论 -
迭代器失效
一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串非标准关联容器hash_set、hash_multiset、hash_map和hash_multimap。几种标准非STL容器,包括数组、bits转载 2013-08-19 08:51:28 · 693 阅读 · 0 评论 -
vector 中 size()和 capacity()的区别
size()指容器当前拥有的元素个数;capacity()指容器在必须分配存储空间之前可以存储的元素总数。例如:/*vector 中 size()和 capacity()的区别-----刘浩 2011年1月4日*/#include #include #pragma warning (disable:4786)#include using n转载 2013-08-19 08:54:38 · 13114 阅读 · 0 评论 -
在OnPaint中必须调用一次BeginPaint和EndPaint,且也只能调用一次。(上)
基于对话框的程序(mfc默认生成),重载OnEraseBkgnd函数,其它不动,若在OnPaint函数中不调用其基类的OnPaint函数,即注释掉CDialog::OnPaint();,代码如下:[cpp] view plaincopyvoid CDDDDlg::OnPaint() { if (IsIconic())转载 2013-09-09 11:35:20 · 1053 阅读 · 0 评论 -
在OnPaint中必须调用一次BeginPaint和EndPaint,且也只能调用一次。(下)
A:在OnPaint中注释此句CDialog::OnPaint();为什么会不停地调用OnPaint函数呢(不断执行TRACE("OnPaint\n");语句)? Q:如果自己的OnPaint代码什么也没做的话(至少没有声明过CPaintDC类型的变量),还必须调用一下CDialog::OnPaint,否则BeginPaint和EndPaint就没有办法被调用了。总之,在响应W转载 2013-09-09 11:36:56 · 913 阅读 · 0 评论 -
CFileFind中FindFile与API中FindFirstFile的区别
A:1,API中的函数FindFirstFile找到的是某个目录下的第一个文件,那怎么才是“第一个”?是创建时间最早的那个文件吗???2,CFileFind类下的FindFile函数和API中的FindFirstFile作用是一样的吗??3,CFileFind类下的FindNextFile函数和API中的FindNextFile作用是一样的吗??我想在某个目录下存储视频文件,比转载 2013-09-12 10:47:14 · 1666 阅读 · 0 评论 -
CFileFind中FindFile与API的FindFirstFile区别(CSDN问题)
A:1,API中的函数FindFirstFile找到的是某个目录下的第一个文件,那怎么才是“第一个”?是创建时间最早的那个文件吗???2,CFileFind类下的FindFile函数和API中的FindFirstFile作用是一样的吗??3,CFileFind类下的FindNextFile函数和API中的FindNextFile作用是一样的吗??我想在某个目录下存储视频文件,比转载 2013-09-12 10:46:08 · 3067 阅读 · 0 评论 -
Windows线程创建、退出及资源释放
可以通过以下几种方法创建一个线程:1、CreateThread2、_beginthread3、_beginthreadex4、AfxBeginThread--------------------------------------------------------------------------------------1、CreateThread函数原型转载 2013-10-07 11:08:51 · 20825 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法-------wince里面的中断IST经常使用。 .
线程中CreateEvent和SetEvent及WaitForSingleObject的用法首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面.CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种转载 2013-10-07 11:04:08 · 1480 阅读 · 0 评论 -
网络编程socket之bind函数
摘要 :在套接口中,一个套接字只是用户程序与内核交互信息的枢纽,它自身没有太多的信息,也没有网络协议地址和端口号等信息,在进行网络通信的时候,必须把一个套接字与一个地址相关联,这个过程就是地址绑定的过程。许多时候内核会我们自动绑定一个地址,然而有时用户可能需要自己来完成这个绑定的过程,以满足实际应用的需要,最典型的情况是一个服务器进程需要绑定一个众所周知的地址或端口以等待客户来连接。这个事由 bi转载 2013-10-07 11:01:54 · 1044 阅读 · 0 评论 -
VC中 十六进制字符串转换为十进制数字 转
在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:view plaincopy to clipboardprint?char *ptr="123"; int n=0; n=ato转载 2013-09-26 09:45:32 · 2167 阅读 · 0 评论 -
VS2010 如何添加H文件目录和LIB目录
第一次使用VS2010,也是初学者开始编写VC++,程序首先学习编写DLL文件,编译完自己的DLL文件后,要在其它项目中使用,开始遇到很多错,但是在网上搜索了好久后,终于解决了问题。H文件目录:依次点击“项目——XX 属性——C/C++——常规”,在“附加包含目录”中加入H文件所在的文件夹 LIB目录: 依次点击“项目——XX 属性——链接器——常规”,在“附加库目录”转载 2013-10-15 11:43:40 · 816 阅读 · 0 评论 -
Winsock2中WSAAsynSelect()模型各种事件的触发条件[转]
Winsock2中WSAAsynSelect()模型各种事件的触发条件[转]使用WSAAsynSelect()模型的关键是要搞清楚各种事件的触发条件,不然会造成读或写数据混乱。 这些事件的触发条件同样适用于CAsyncSocket ======================= [1]FD_READ事件触发条件: 1.在数据到达socket后,并且从来没有触发过FD转载 2014-05-22 15:31:17 · 1002 阅读 · 0 评论 -
C与C++动态分配,释放内存的区别
1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。转载 2013-07-26 15:17:45 · 739 阅读 · 0 评论 -
SendMessage、PostMessage原理
SendMessage、PostMessage原理本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为:1、SendMessage、PostMessage的运行机制。2、SendMessage、PostMessage的运行内幕。3、SendMessage、PostMessage的内部实转载 2013-07-24 16:59:37 · 952 阅读 · 0 评论 -
有关(int&)和(int)的区别
先看一段程序?123456789101112131415161718192021222324252627#include "st转载 2013-07-24 09:19:45 · 1131 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap)转载 2011-07-05 17:45:13 · 397 阅读 · 0 评论 -
C++的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include v转载 2011-10-26 09:05:46 · 366 阅读 · 0 评论 -
常用字符串长度计算函数
转自:http://aabbc1122.blog.163.com/blog/static/570432572011912105754516/字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目。常见的获取字符串长度的方法包括如下几种。1.使用sizeof获取字符串长度sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符\0)。对于ANS转载 2011-10-26 09:36:57 · 882 阅读 · 0 评论 -
深入理解sizeof
http://aabbc1122.blog.163.com/blog/static/570432572011912105826420/一、好首先看看sizeof和strlen在MSDN上的定义:首先看一MSDN上如何对sizeof进行定义的:sizeof Operator sizeof expression The sizeof keyword gives the amount转载 2011-10-26 09:35:02 · 480 阅读 · 0 评论 -
C++中#include包含头文件带 .h 和不带 .h 的区别
转自:http://www.cnblogs.com/mysunnyday/archive/2011/06/22/2087373.html如 #include 和 #include 包含的东西有哪些不同? 之前在写C++程序的时候只知道使用 #include 的时候,使用函数前要用 using namespace std; 导入命名空间,而 #include 则不用转载 2011-10-26 11:19:51 · 1267 阅读 · 0 评论 -
内存对齐(补齐)
首先,来解释一下为什么要内存对齐(或者称补齐)一个原因是,实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数。另一个原因是,可以提升读取或写入数据的速度,减少读取或写入的次数。 接下来,来谈谈内存对齐(补齐)的准则以结构体转载 2011-10-26 10:31:07 · 2829 阅读 · 0 评论 -
关于 * 与 *& 以及 ** 与 **& 的问题
转自:http://aabbc1122.blog.163.com/blog/static/5704325720111197299790/关于指针、引用还有取地址。 参考:http://bbs.byr.cn/#!article/CPP/4810传递指针只是改变形参,只是在调用的函数内作用,传递引用才是形参与实参一起改变,在调用完函数后值还是发生改变可以试试下面的例子(VC++)转载 2011-12-09 19:37:31 · 480 阅读 · 0 评论 -
在vs2008 C++下调试控制台程序的心得及技巧
Visual Studio 2008环境与VC6.0的环境存在着比较大的区别,下面就一些小小的区别在这里做一些探讨,欢迎指教!1、如果是调试控制台程序,很多时候点击“启动调试”后是一闪而过,此时可有两种方法让cmd下dos调试屏幕暂停:A:不要直接点击vs2008的“启动调试”按钮,而是按Control+F5组合键。B:在主函数main()里“return 0;”前加上一句:cin.g转载 2012-05-30 18:54:43 · 1968 阅读 · 0 评论 -
c++异常处理,异常声明,捕获异常
C++ 捕获异常的一些规则: 1. 非MFC 的c++ 异常应该用过引用来捕获。使用引用来捕获异常不需要删除c++ 异常对象。因为使用引用捕获的异常对象会在栈中传递。而且保持了多态性,使得你捕获的异常正是你抛出的异常对象。使用指针捕获异常的话,需要你删除异常对象。使用值捕获的话,会导致对象的slicing 问题。更详细的信息见Effective C++ 第13条.2.转载 2013-07-08 09:14:55 · 1634 阅读 · 0 评论 -
FTP文件传输协议两种模式-主动模式和被动模式
编辑本段使用模式FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。[4]一个主动模式的FTP连接建立要遵循以下步骤:1.客户端打开一个随机的端口(端口号大于1024转载 2013-07-08 10:59:06 · 50148 阅读 · 1 评论 -
函数调用方式 FAR PASCAL,__cdecl,_stdcall,__pasc
函数调用方式 FAR PASCAL,__cdecl,_stdcall,__pasc... 2011-02-06 12:30:21 来自: 幻雨と抱貂 标题:函数调用方式 FAR PASCAL,__cdecl,_stdcall,__pascal... 函数调用方式 FAR PASCAL,__cdecl,_stdcall,__pascal.转载 2013-07-09 15:04:24 · 1355 阅读 · 0 评论 -
FTP协议过程分析
建立TCP连接 客户呼叫服务器21端口,客户端自已选一个端口如:3963 三次握手建立TCP连接服务器发回FTP欢迎信息 220 Welcome to HUST SOUTH 1 Bulding Kaka FTP service.客户端登录 端口:3963--21 客户--服务器 首先客户端发送用户名, 55 53-45 52 20 31 0D 0A USER 1 USER是FTP命令,1为转载 2013-07-10 11:45:53 · 6183 阅读 · 0 评论 -
C语言中变量的作用域
C语言中变量的作用域C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同。C语言中的变量,按照作用域的范围可分为两种,即局部变量和全局变量。一、局部变量局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内,离开该函数后再使用这种变量是非法的。例如:int f1(int a) /*函数f1*/{ in转载 2013-07-10 09:21:35 · 832 阅读 · 0 评论 -
CTime和DWORD类型的相互转换
1.CTime对象转换为DWORD类型CTime time=CTime::GetCurrentTime(); //获取当前时间DWORD timedw = time.GetTime(); //CTime->DWORD2.DWORD类型变量转换为CTime对象CTime time1(timedw); //DWORD->CTimeCString strTime;s转载 2013-07-24 10:39:21 · 1417 阅读 · 0 评论 -
从缓冲上看阻塞与非阻塞socket在发送接收上的区别 .
最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞区别的描述,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解。所以我想写一篇文章来纠正错误,并作为记录方便查阅,如有转载,注明作者(jwybobo2007)以及出处即可。 首先socket在默认情况下是阻塞状态的(未指异步操作以及其它一些特殊用途下,直接默认为非阻塞),这就使得发送以及接收操作转载 2014-06-09 15:56:29 · 951 阅读 · 0 评论