|
摘要:之前一直把内存对齐弄错了,参考了下面两篇文章后,试着简单归纳下内存对齐规则http://blog.csdn.net/hairetz/article/details/4084088http://hi.baidu.com/smartroses/blog/item/9fcca936b79fdc320a55a9f9.html内存对齐主要有2大步骤:成员对齐和结构对齐成员对齐规则:结构体第一个成员从位移0开始存储eg:int [0-3] 从第二个成员开始,都要从min(pack值,this member size)的整数倍的位移开始存储 eg:#pragmapack(2)int...
阅读全文
摘要:View Code string result; string str = "uid=1000012(as) gid=1000000(domain users) groups=1000000(domain users),1000015(ABD/users),1000015(ABD/s)"; int cur_pos = 0; int left_pos = 0; int right_pos = 0; int offset = 0; while(1) { left_pos = str.find('(',cur_pos); ...
阅读全文
摘要:C++ Unicode SBCS 函数对照表,以备日后查阅GenericSBCSUNICODETCHARcharwchar_t_TEOFEOFWEOF_TINTintwint_t_TSCHARsignedcharwchar_t_TUCHARunsignedcharwchar_t_TXCHARcharwchar_t__T(x)xL__targv__argv__wargv__tcserror_strerror__wcserror__tcserror_s_strerror_s__wcserror_s_cgetts_cgets_cgetws_cgetts_s_cgets_s_cgetws_s_cput
阅读全文
摘要:是否enum calss struct后面忘记了;号
阅读全文
摘要:View Code int rand_arr[54] = {0}; int rand_idx = 0; int src_arr[54] = {0}; int src_end = 53; int tempsize = 0; int rand_range = 54; srand(NULL); //初始src数组 for(int i=0; i!=54; i++) src_arr[i] = i; for(int i=0; i!=54; i++) { //生成随机数 得到下标 tempsize ...
阅读全文
摘要:1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中含有两个参数。对单木运算符来说,成员函数重载运算符的函数参数表中没有参数,而用友元函数重载运算符函数参数表中含有一个函数。这个问题要搞清楚,有一个this指针的问题。。。2.双目运算符一般可以用友元函数重载和成员函数重载,但有一种情况只可以用友元函数重载。即:双目运算符左边的变量是一个常量,而不是对象!!!这点很重要的额。书上推荐的一般经验: 1.对于单目运算符,建议选择成员函数; 2.对于运算符“=,(),[],->”只能作为成员函数; 3.对于运算符“+ =,-=,/=,*=,&am
阅读全文
摘要:你可以使用WaitForSingleObject函数来等待一个内核对象变为已通知状态:DWORDWaitForSingleObject(HANDLE hObject,//指明一个内核对象的句柄DWORD dwMilliseconds);//等待时间 该函数需要传递一个内核对象句柄,该句柄标识一个内核对象,如果该内核对象处于未通知状态,则该函数导致线程进入阻塞状态;如果该内核对象处于已通知状态,则该函数立即返回WAIT_OBJECT_0。第二个参数指明了需要等待的时间(毫秒),可以传递INFINITE指明要无限期等待下去,如果第二个参数为0,那么函数就测试同步对象的状态并立即返回。如果等待超时.
阅读全文
摘要:View Code #include <string.h>#include <stdio.h>void printHexString(const void* buf , size_t size);int main(){ char* pstr = new char[64]; printHexString(pstr , 64); const char* ps = "Hello World!"; printHexString(ps , 20); char* pstr2 = new char[64]; printHex...
阅读全文
摘要:View Code int DigitIpToStrIp(unsigned long ip, char *strip){ unsigned long temp; temp = ip << 8 * 3; unsigned int IP_first = temp >> 8 * 3; temp = ip << 8 * 2; unsigned int IP_second= temp >> 8 * 3; temp = ip << 8 * 1; unsigned int IP_thrid = temp >> 8 * 3; unsign
阅读全文
摘要:View Code 第一:private, public, protected 访问标号的访问范围。1. private: 只能由1.该类中的函数、2.其友元函数访问。 该类的对象也不能访问。2. protected:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问。 该类的对象也不能访问。3. public: 可以被1.该类中的函数、2.子类的函数、3.其友元函数访问。 该类的对象可以访问。注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。第二:类的继...
阅读全文
摘要:View Code 让编译器进行隐式类型转换所造成的弊端要大于它所带来的好处,所以除非你确实需要,不要定义类型转换函数。隐式类型转换的缺点:它们的存在将导致错误的发生。例如:class Rational {public: ... operator double() const; // 转换Rational类成double类型};在下面这种情况下,这个函数会被自动调用:Rational r(1, 2); // r 的值是1/2 double d = 0.5 * r; ...
阅读全文
摘要:View Code 1.返回引用能成为左值eg: fun()=13;2.直接代表传的东西,而不是拷贝3.效率高如果不想fun()=13;加上const修饰引用的话 fun()=13 就会报错
阅读全文
摘要:View Code 如果以最高位为符号位,二进制原码最大为01111111=2的7次方=127,最小为11111111=-2的7次方=-127此时0有两种表示方法,即正0和负0:00000000=10000000=0。所以,二进制原码表示时,范围是-127~-0和0~127,因为有两个零的存在,所以能表示不同的数值个数一共只有2的8次方-1个,而16位二进制能够表示的2的8次方个数值。 但是计算机中采用二进制补码存储数据,即正数编码不变,从00000000到01111111依旧表示0到127,而负数需要把除符号位以后的部分取反加1,即-127的补码为10000001。 到此,再来看原码...
阅读全文
摘要:View Code #pragma comment(lib,"user32")#include <windows.h>#include <time.h>char HHMM[6];time_t t;int i,r;int main() { while (1) { for (i=0;i<10;i++) Sleep(1000); time(&t); strftime(HHMM,6,"%H:%M",localtime(&t)); if (IDCANCEL==MessageBox(NULL,HHMM,"Tim
阅读全文
摘要:View Code #include <stdio.h>#include <string>#include <Windows.h>#include <Tlhelp32.h>DWORD GetProcessVid(char* lpName){ HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; if(!lpName) { return 0; } hProcessSnap = CreateTo...
阅读全文
摘要:View Code 但是,所谓使用fopen标志打开文本文件与二进制文件的说法并不准确。正确的说法应该是--以文本方式和二进制方式打开文件。因为我们用两种方式都可以任意的文件。 即使这样,为什么还要区分两种方式呢? 这是因为这两种方式在读写文件时的操作是不一样的。 二进制方式很简单,读文件时,会原封不动的读出文件的全部內容,写的時候,也是把內存缓冲区的內容原封不动的写到文件中。 而文本方式就不一样了,在读文件时,会将换行符号CRLF(0x0D 0x0A)全部转换成单个的0x0A,并且当遇到结束符CTRLZ(0x1A)时,就认为文件已经结束。相应的,写文件时,会将所有的0x0A换成0x0...
阅读全文
摘要:View Code time_t now; time(&now); struct tm* newtime = localtime(&now); printf( "%4d/%02d/%02d %02d:%02d:%02d\n", 1900 + newtime->tm_year, newtime->tm_mon,newtime->tm_mday,newtime->tm_hour,newtime->tm_min, newtime->tm_sec);
阅读全文
摘要:C优先级列表PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;Class::age = 2;for( i = 0; i < 10; i++ )
阅读全文
摘要:View Code 第一种情况char buf[10][5]; //可以解析为有10行字符串 每行5个字节char (*p)[5] = buf; //数组的指针p指向数组[5] 指针++ 跨度为5字节char **tp = (char**)buf; //二级指针tp指向数组[10][5] 指针++ 跨度也就是10X5 = 50个字节//对第一行进行赋值strcpy(buf[0],"abc"); strcpy(p[1],"123");//三者地址一样printf("%s %s \n",buf[0],buf[1]); //成功打印 解析度
阅读全文
摘要:View Code //有没有好的字符串匹配方法 把括号里的东西 取出来?#include <stdio.h>#include <stdlib.h>char s[]="uid=1000012(as) gid=1000000(domain users) groups=1000000(domain users),1000015(ABCD/users)";char *p,t[80];int n,r;int main() { p=s; while (1) { r=sscanf(p,"%*[^(](%79[^)])%n",t,&n)
阅读全文
|