随笔分类 -  C/C++

摘要:虚继承: http://zh.wikipedia.org/wiki/%E8%99%9A%E7%BB%A7%E6%89%BF 解决了菱形继承问题 cB cC 继承cA cD继承cB,cC cD会有两个cA 函数出现二义性。cB,cC虚继承cA后 cD的继承结构里只有一个cA. 虚函数 -->解决父类调 阅读全文
posted @ 2014-10-25 15:29 晨祷 阅读(178) 评论(0) 推荐(0)
摘要:源:http://bbs.csdn.net/topics/300040713 C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。<cname>形式 的标准头文件【<complex>例外】其内容与ISO标准C包含的name.h头文件相同, 阅读全文
posted @ 2014-10-21 16:11 晨祷 阅读(703) 评论(0) 推荐(0)
摘要:常量函数(函数后加const) const对象只能调用const成员函数。const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误在const函数中调用非const成员函数是语法错误 —————————————————————————————————————— 任 阅读全文
posted @ 2014-09-23 17:33 晨祷 阅读(1449) 评论(0) 推荐(0)
摘要:c++的类按值方式传递会再次创建一个类,并用传来的类的初始化参数进行初始化 上面的代码 _tmain 的FEF 与 mam的 FEF 是两个不同的地址。 在c里如果struct以值的方式传递,会将当前struct的每项值赋值于新struct,C++里算是多了一步 初始化赋值。 加了 与符号后(C++ 阅读全文
posted @ 2013-12-20 17:51 晨祷 阅读(175) 评论(0) 推荐(0)
摘要:typedef void (PM::*E)(int c); typedef void (*EE)(); //typedef void *EE() = typedef void* EE(); 所以要加() void a(){ printf("%d\n",10); } void pm(EE a){//EE类型函数是全局函数 所以可以直接使用 a(); } void pmm(E... 阅读全文
posted @ 2013-12-09 20:53 晨祷 阅读(376) 评论(0) 推荐(0)
摘要:静态链接库:*.lib 在程序编译时要使用的代码,会嵌入到最后生成的执行程序里。 动态链接库:*.dll 在程序运行时要使用的代码。 可在运行时载入 或 在编译时链接 引入库(*.lib)文件 进行使用. 动态链接库的类 方法 如果需要让外部使用 需要对类、方法进行标识: __declspec(dl 阅读全文
posted @ 2013-11-26 15:19 晨祷 阅读(392) 评论(0) 推荐(0)
摘要:在c++里回调函数分2种: 全局函数:不包函在类的内部 或 类内部的静态函数 类内部函数(或叫 局部函数):需要通过实例化后的对象调用的 因c++是c的一层封装,所以类似c里struct内的函数 在传递回调函数时只要保证 函数结构一致就可通过编译检查: 全局函数这样用就可以,但局部函数是不能这样用的 阅读全文
posted @ 2013-10-25 14:30 晨祷 阅读(557) 评论(0) 推荐(0)
摘要:C: void war(int m,...){ printf("%d\n",m); printf("%d\n",*(&m+1)); printf("%d\n",*(&m+2));}//就像数组一样取。原理麻 就是m的地址+1,当然,由于数组的数量未知,很容易多取,所以在传的时候未尾加NULL Cpp 阅读全文
posted @ 2013-09-29 15:00 晨祷 阅读(263) 评论(0) 推荐(0)
摘要:正常定义一个数据结构都是这样用typedef struct{ int a; int b;}M;在使用时 M a;其实 struct是这样的struct M{ int a; int b;};在使用时 struct M a;不过为了方便,用typedef的很多。 阅读全文
posted @ 2013-09-29 14:55 晨祷 阅读(339) 评论(0) 推荐(0)
摘要:typedef int m(int a,int b);这样就定义了一个 m 类型m类型的含义有:一个函数,函数的参数有int a,int b这样在有需要接这种结构的函数时,就可以这样写:void test(m mFun){ mFun(1,2);}int ha(int a,int b){ return 3; }void main(){ test((m)ha);//ha的结构与m一样} 阅读全文
posted @ 2013-09-29 14:49 晨祷 阅读(173) 评论(0) 推荐(0)
摘要:malloc(sizeof(int));//申请 int 大小的内存typedef struct{ int a; int b;}MA;当想用这个MA的时候,可以void test1(){ MA m; m.a = 3; m.b = 4;}还可以这样void test2(){ MA *m = (MA*)malloc(sizeof(MA)); m->a = 3; m->b = 4;}这两个的不同是test1的m在编译阶段就会计算好内存,这个内存的大小是固定,这样在第二次使用test1的方法时变量m的地址,内存,还是那个第一次变量m的地址,内存。test2在第二次使用时会新分配一块内存出来 阅读全文
posted @ 2013-09-29 14:37 晨祷 阅读(226) 评论(0) 推荐(0)
摘要:int a=1;int *c;c=&a; 给变量a赋值 1 新建一个指针变量c 把变量a的指针赋值给变量c int *p; 定义个变量,定义变量p类型为 int* int* 类型: 指向int的指针 int **p; 定义个变量,定义变量p类型为 int** int**类型:指向int的指针的指针 阅读全文
posted @ 2013-09-29 14:28 晨祷 阅读(183) 评论(0) 推荐(0)
摘要:new 相当于 malloc ,delete 相当于 free ,用法一样 c++ 有 namespace,可以避免类名污染 namespace xx{} c++ 有类 这个与 c#、as3比较很好理解 定义在头文件里的 外部要用a就要引用这个头文件#ifndef classA //正常来讲这具a的 阅读全文
posted @ 2013-09-29 14:17 晨祷 阅读(418) 评论(0) 推荐(0)
摘要:数组在c的表现是一些连续地址的指针 int a[3] 这个a 是数组类型,但a也是个指针,是a[0]的指针,根据“一些连续地址的指针"规则 a[1] 自然是 a+1:指针地址的值+1 这就是数组,至于多维数组,他的指针仍然是连续的,只是可以[0][1]这样取而体现了不同。 那么这个a到底是什么呢 还 阅读全文
posted @ 2013-09-24 20:00 晨祷 阅读(664) 评论(0) 推荐(0)
摘要:int c=3; while(c<8){ c+=1; if(c==5){ continue; } printf("\n%d",c); }输出:2 3 4 6 7 阅读全文
posted @ 2013-03-23 17:30 晨祷 阅读(171) 评论(0) 推荐(0)
摘要:数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。栈 (Stack) 是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。队列 (Queue) 一种特殊的线性表,它只允许在表的前端... 阅读全文
posted @ 2012-12-11 13:51 晨祷 阅读(527) 评论(0) 推荐(0)
摘要:相关函数:scanf, snprintf头文件:#include <stdio.h>定义函数:int printf(const char * format, ...);函数说明:printf()会根据参数format 字符串来转换并格式化数据, 然后将结果写出到标准输出设备, 直到出现字符串结束('\0')为止。参数format 字符串可包含下列三种字符类型:1. 一般文本, 伴随直接输出.2. ASCII 控制字符, 如\t、\n 等.3. 格式转换字符.格式转换为一个百分比符号(%)及其后的格式字符所组成. 一般而言, 每个%符号在其后都必需有一printf() 阅读全文
posted @ 2012-12-07 15:25 晨祷 阅读(331) 评论(0) 推荐(0)
摘要:字符串复制 strcpy string copy 字符串复制字符串连接 strcat string catch 字符串1钩着字符串2字符串比较 strcmp string compare 字符串比较大小字符串分解 strtok string token 按标志将字符串分解字符串搜索 strstr s 阅读全文
posted @ 2012-07-22 18:42 晨祷 阅读(222) 评论(0) 推荐(0)
摘要:#include:包含一个源代码文件#define:定义宏#undef:取消已定义的宏#if:如果给定条件为真,则编译下面代码#ifdef:如果宏已经定义,则编译下面代码#ifndef:如果宏没有定义,则编译下面代码#elif:如果前面的#if给定条件不为真,当前条件为真,则编译下面代码#endif:结束一个#if……#else条件编译块#error:停止编译并显示错误信息#define DD(s) printf("%s",#s);extern 阅读全文
posted @ 2012-07-22 18:39 晨祷 阅读(202) 评论(0) 推荐(0)
摘要:typedef int* p typedef void farr,*d; typedef int pm(int a,int *b); typedef void* farr;//无类型指针 可以是任何类型数据的指针。 获取类型存储空间 sizeof(int) 阅读全文
posted @ 2012-07-22 18:37 晨祷 阅读(196) 评论(0) 推荐(0)