随笔分类 -  C/C++

摘要:sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeHint 属性的值,而这个值由 sizeHint() 函数来确定。但是 widget 的大小的确定还... 阅读全文
posted @ 2014-07-10 16:21 记忆斑驳的时光 阅读(1278) 评论(0) 推荐(0)
摘要:_cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的 顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外, 像printf这样接受可变个数参数的函数只有用cde... 阅读全文
posted @ 2014-06-18 15:33 记忆斑驳的时光 阅读(3111) 评论(0) 推荐(0)
摘要:1、LIB与DLL文件的区别 DLL是一个完整的程序,称为“动态链接库”,DLL中包含的主要有三块内容:1.全部变量 2.函数接口 3.资源;DLL中有一个函数导出表,其中每一项都是一个函数名称。通过一定的方式连接这些函数接口,来调用这些函数的功能。dll有两种加载方式:隐式链接和显式链接。dll一... 阅读全文
posted @ 2014-06-17 16:33 记忆斑驳的时光 阅读(909) 评论(0) 推荐(0)
摘要:一、套接字选项:有以下3中方式可以对套接字选项进行设置:getsockopt 和 setsockopt 函数fcntl函数ioctl函数getsockopt和setsockopt函数用于获得和设置套接字的选项值,fcntl用来操作文件描述符的有关属性,比如设置套接字文件描述符工作于非阻塞模式等,而ioctl用于控制I/O设备。套接字选项和协议层协议层(Level) 选项(optname)含义 SOL_SOCKET (套接字通用选项) SO_KEEPALIVE O_RESUSEADDR SO_... 阅读全文
posted @ 2014-03-17 22:30 记忆斑驳的时光 阅读(1515) 评论(0) 推荐(0)
摘要:解读IplImage结构 typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数OPENCV函数支持1,2,3 或... 阅读全文
posted @ 2013-12-18 17:44 记忆斑驳的时光 阅读(1123) 评论(0) 推荐(0)
摘要:运算符重载的规则如下: 1、C++中的运算符除了少数几个之外,全部可以重载,而且只能重载C++中已经有的运算符。 2、重载之后运算符的优先级和结合性都不会改变 3、运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造,一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。 注意:不能重载的运算符只有5个,它们... 阅读全文
posted @ 2013-09-15 20:22 记忆斑驳的时光 阅读(3529) 评论(0) 推荐(0)
摘要:如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。 Windows操作系统提供了五种I/O模型,分别是: ■ 选择(select); ■ 异步选择(WSAAsyncSelect); ■ 事件选择(WSAEventSelect); ■ 重叠I/O(Overlapped I/O); ■ 完成端口(Completion Port) 。 每一种模型适... 阅读全文
posted @ 2013-08-27 15:03 记忆斑驳的时光 阅读(983) 评论(0) 推荐(0)
摘要:ASSERT()被测试它的参数,如果参数为零,则中断执行并打印一段说明消息。在Release版本的程序中它不起任何作用。 ASSERT()使用的时候必须保证参数表达式中不能有函数调用,因此对于任何有函数调用的参数表达式,应该使用宏VERIFY(),以保证表达式中的函数调用在Release版本中会被正确求值。 断言(assertion)用断言信息(程序,模块,assertion行)的对话框执行,... 阅读全文
posted @ 2013-08-24 21:28 记忆斑驳的时光 阅读(1105) 评论(0) 推荐(0)
摘要:2、基本的Windows Socket API编程 需要在程序中添加下面的包含语句:#include #pragma comment( lib, "WS2_32" ) 使用Vc++编译时需添加编译链接依赖项ws2_32.lib库 协议寻址 在winsock中,应用程序通过Sockaddr_in 结构来指定IP地址和服务端口信息: sock... 阅读全文
posted @ 2013-08-19 18:32 记忆斑驳的时光 阅读(1699) 评论(0) 推荐(0)
摘要:1、套接字编程原理 一个完整的网间通信进程需要由两个进程组成,并且只能用同一种高层协议。也就是说,不可能通信的一段用TCP,而另一端用UDP。一个完整的网络信息需要一个五元组来标识:协议、本地地址、本地端口号、远端地址、远端端口号。 1.1Client/Server通信模型 在客户端/服务器模式中我们将请求服务的一方成为客户,将提供某种服务的一方称为服务器(S... 阅读全文
posted @ 2013-08-19 17:44 记忆斑驳的时光 阅读(4178) 评论(1) 推荐(3)
摘要:单纯视图之间的切换 单文档多视图切换是我在学习MFC中遇到的一个老大难问题,在今天总算是一一破解了。我觉得视图切换分为三个等级,第一是在未切分窗格的情况下切换视图类;第二是在分割窗格的一个窗格内实行视图切换;第三是在分割窗格和未分割之间的切换和视图切换。 在MFC创建SDI的伊始,MFC默认的视图类是CView,如果CView满足你的需求,可以直接单击finish,如果你不想让CView成为你... 阅读全文
posted @ 2013-08-08 17:49 记忆斑驳的时光 阅读(3063) 评论(0) 推荐(1)
摘要:编写高效简洁的C语言代码,是许多软件工程师追求的目标。废话不说,走起! 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题 eg.字符串的赋值 //方法A 通常办法#define LEN 32char string1[LEN];memset(string1,0,LEN);strcpy(string1,"This is ... 阅读全文
posted @ 2013-08-03 09:26 记忆斑驳的时光 阅读(9567) 评论(4) 推荐(2)
摘要:一、什么是可变参数 在C语言编程中有时会遇到一些参数个数可变的函数,例如printf(),scanf()函数,其函数原型为: int printf(const char* format,…),int scanf(const char *format,…);它除了有一个参数format固定以外,后面跟着的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf(“%d”,i); printf(“%d,%c”,i,j);二、C语言---简单的可变参数例子(实现思想) 1、整型数据的输出 #include #include void a... 阅读全文
posted @ 2013-07-28 19:35 记忆斑驳的时光 阅读(20773) 评论(2) 推荐(1)
摘要:一、使用指针的时候需要注意几点: 分配空间 初始化 释放 二、常见的错误有几种: 1)内存分配未成功,却使用了它 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,使用内存之前检查指针是否为Null。 如果指针p是函数的参数,那么在函数的入口处用assert(p != NULL)进行检查。如果使用malloc或new来申请内存,应该用... 阅读全文
posted @ 2013-07-28 10:02 记忆斑驳的时光 阅读(1104) 评论(1) 推荐(1)
摘要:一、堆和栈基本概念: 堆和栈(理论部分) 堆的概念: 这块内存是有很多内存块组成,很像鞭炮一样串在一根绳子上,但这些内存块的大小不一样,存储在链表结构中的结点中。操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请的堆节点,然后将该节点从空闲节点链表中删除,并将该节点的空间分配给程序。 栈的概念: 这块内存... 阅读全文
posted @ 2013-07-27 17:59 记忆斑驳的时光 阅读(1218) 评论(0) 推荐(2)
摘要:对于InitToolBar()函数进行进一步解析: 1、首先声明一个全局对象: CToolBar m_toolbar; 2、然后用create()创建toolbar: //创建ToolBar工具条 if(!m_toolbar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP ... 阅读全文
posted @ 2013-07-03 09:22 记忆斑驳的时光 阅读(1052) 评论(0) 推荐(0)
摘要:1、友元函数友元关系提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通俗地说,友元关系就是一个类主动声明哪些其他类或函数是它的朋友,进而给他们提供对本类的访问特许。也就是说,用过友元关系,一个普通函数或者类的成员可以访问封装于另外一个类中的数据。从一定程度上讲,友元是对数据隐蔽和封装的破坏。但是为了数据共享,提高程序的效率和可读性,很多情况下这种小的破坏也是必要的。使用友元函数计算两点间的距离:#include <iostream>#include <math.h>using namespace std;class Point{publi 阅读全文
posted @ 2013-05-20 17:09 记忆斑驳的时光 阅读(286) 评论(0) 推荐(0)
摘要:首先:假设p指向char类型变量 (占1个字节)假设q指向int类型变量 (占4个字节)假设r指向double类型变量(占8个字节)那么p,q,r它们本身所占的字结束是否一样?sizeof(数据类型)此运算符功能:返回值就是该数据类型所占的字节数。sizeof(变量名)此运算符功能:返回值就是该变量所占的字结束。#include <stdio.h>int main(int argc, char* argv[]){ char ch = 'a'; char *c = &ch; printf("char ----%d,%d\n",sizeof( 阅读全文
posted @ 2013-05-16 16:55 记忆斑驳的时光 阅读(1178) 评论(0) 推荐(0)
摘要:1、我们先看一个不带指针的常量:const int p=20有了const 修饰的p,我们不称它为变量,而称符号常量,代表着20这个数,这就是const的作用。p是不能在其他地方重新赋值。const与c语言中的#define的差别无参宏不是符号常量,没有数据类型,没有值,在内存中不分配地址。它在预处理时做宏替换,不可能做类型检查const定义的常量是符号常量,有数据类型,也有值,且其值不可改变,在内存中有地址,编译时做类型检查。2、我们都知道const int p=20;int const p=20;它们是完全相同的。那么const int* p 与int *const p、const *in 阅读全文
posted @ 2013-05-16 16:28 记忆斑驳的时光 阅读(718) 评论(0) 推荐(0)
摘要:不同存储的对象生存期不同。所谓对象的生存期是指对象从被创建开始到被释放为止的时间。按生存期的不同对象可分为如下三种:1、局部对象:当对象被定义时调用构造函数,该对象被创建,当程序退出定义该对象所在的函数体或程序块时,调用析构函数,释放该对象。2、静态对象:当程序第一次执行所定义的静态对象时,该对象被创建,当程序结束时,该对象被释放。3、全局对象:当程序开始时,调用构造函数创建该对象,当程序结束时调用析构函数释放该对象。局部对象是被定义在一个函数体或程序块的,它的作用域小,生存期也短。静态对象是被定义在一个文件中,它的作用域从定义时起到文件结束时为止,它的作用域比较大,它的生存期也比较大。#in 阅读全文
posted @ 2013-05-15 21:34 记忆斑驳的时光 阅读(1213) 评论(0) 推荐(0)