- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 重载、覆盖、多态
重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。令人迷惑的隐藏规则本来仅仅区别重载与覆盖并不算
2013-10-21 16:53:17
476
原创 指针的复杂声明
解析指针声明可以采用右左法则, 右左法则:首先从未定义的标示符看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。int * (* (*fp) (int) ) [10]; 阅读步骤:1.从未定义的变量名开始阅读 -----------------------------------
2013-10-15 16:31:34
563
原创 函数指针与指针函数
void test(int x); //此处的申明也可写成:void test( int );void (*f)(int ); //声明f 变量C语言规定函数名会被转换为指向这个函数的指针,除非这个函数名作为& 操作符或sizeof操作符的操作数(注意:函数名用于sizeof的操作数是非法的)。也就是说f = test;中test被自动转换为&test,而f= &test
2013-10-14 22:11:31
644
原创 头插入法建立链表
typedef int value_type;typedef struct Node{value_type data;struct Node *next;}Node,LinkedList;LinkedList LinkedListCreat(){Node *L;L=(Node *) malloc(sizeof(Node));
2013-10-14 16:21:38
726
原创 尾插法建立链表
typedef int value_type;typedef struct Node{value_type data;struct Node *next;}Node,LinkedList;LinkedList LinkedListCreat(){Node *L;L=(Node *) malloc(sizeof(Node));L->next=NULL;N
2013-10-14 11:10:02
635
转载 C语言中volatile关键字
1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内
2013-10-11 22:10:20
494
原创 const 关键字
1.常量声明:const =;const double TABLE_BEGIN=50;2.常量成员函数:可以检查对象的状态,但却禁止改变对象。const flow() const;3.常量引用参数:在引用参数之前使用关键字const,在参数类型后面放置&double distance(const point& p1)4.静态成员常量:在类中的声明之前具有两个关键字
2013-10-09 19:31:38
471
转载 C语言实现矩阵相乘
问题描述:编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。分析:首先我们可以根据题意写出函数头。可以定为void MatrixMutiply(int m,int n,int p,long lMatrix1[MAX][MAX],long lMatrix2[MAX][MAX],long lMatrixResult[MAX][MAX]),其中lMatrix1和
2013-10-09 15:05:48
2595
转载 指针
a) int a;表示一个内存空间,这个空间用来存放一个整数(int);b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;d) int (
2013-10-08 16:33:30
355
转载 指针类型在内存中存储大小相同
int _tmain(int argc, _TCHAR* argv[]){ unsigned int a = 0xfffffff7; unsigned char i = (unsigned char)a; char *b = (char *)&a; printf("%08x,%08x\n",i,*b);//000000f7,fffffff7}
2013-10-07 11:02:42
773
转载 float内存存储方式
任何数据在内存中都是以二进制(1或着0)顺序存储的,每一个1或着0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2字节)的 short int型变量的值是1156,那么它的二进制表达就是:00000100 10000100。由于Intel CPU的架构是Little Endian(请参数机算机原理相关知识),所以它是按字节倒序存储的,那么就因该是这样:10000100 000001
2013-10-07 10:47:13
773
1
转载 for 循环执行顺序
for循环的执行顺序用如下表达式:for(expression1;expression2;expression3) { expression4; } 执行的顺序应该是:1)第一次循环,即初始化循环。 首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expr
2013-10-06 21:03:03
1280
转载 位与异或求两个数平均值的方法
今天在优快云上看了一个求两个数的平均值的算法:Avg = (ValueA & ValueB) + (ValueA ^ ValueB) >>1,这种方法避免了应用Avg=(ValueA+ValueB)/2时,ValueA+ValueB造成的溢出。 每个二进数都可以分解为各个位与其权的乘积的和,把两个数的分解为这样的多项式进行相加。考虑两个数的二进制序列中相同的位与不同的位:将相
2013-10-06 14:25:28
1315
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人