代码改变世界

随笔分类 -  C/C++

【转载】STL知识

2012-09-16 22:43 by coodoing, 654 阅读, 收藏, 编辑
摘要: STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开... 阅读全文

常用汇编指令

2012-08-30 11:49 by coodoing, 1844 阅读, 收藏, 编辑
摘要: 一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,ED... 阅读全文

C中sizeof用法

2012-08-30 11:24 by coodoing, 17652 阅读, 收藏, 编辑
摘要: 一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。二、sizeof的使用方法1、用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。 2、用于变量sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形... 阅读全文

C中几组指针

2012-08-28 11:33 by coodoing, 408 阅读, 收藏, 编辑
摘要: 具体关于c指针说明可参考前面两篇文章。C中指针详解和C中复杂类型声明。 1、二维数组 下面就三种二维数组进行说明。 1: int **Ptr; 2: int *Ptr[ 5 ]; 3: int ( *Ptr )[ 5 ]; 以上三例都是整数的二维数组,都可以用形如 Ptr[ 1 ][ 1 ] 的方式访问其内容;但它们的差别却是很大的。下面我从四个方面对它们进行讨论: ... 阅读全文

C中复杂类型声明

2012-08-28 11:16 by coodoing, 449 阅读, 收藏, 编辑
摘要: 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。 我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。 需要强调一下的是,复杂的C/C++声明并不是好的编程风格;... 阅读全文

C中指针详解

2012-08-28 10:51 by coodoing, 437 阅读, 收藏, 编辑
摘要: 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: 1: int *ptr; 2: char *ptr; 3: int ... 阅读全文

【转】C++继承中的重载,覆盖和隐藏

2012-08-23 21:59 by coodoing, 544 阅读, 收藏, 编辑
摘要: 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide)。在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错!我们先来看一些代码及其编译结果。实例一:基类函数没有virtual,派生类中函数同名,参数随便 #include "stdafx.h" #include <iostream.h> class CB { public: void f(int) { cout << "CB::f(int)" << endl; } };... 阅读全文

字符串操作之循环移位

2012-08-17 16:31 by coodoing, 874 阅读, 收藏, 编辑
摘要: 该篇文章最主要是回顾c语言中字符数组,字符串和指针的处理以及数组越界问题的考虑。 问题描述 编写一个函数,把一个char'组成的字符串循环右移n位。比如原来是"abcdefghi",如果n=2,移位后应该是"hiabcdefgh"。 问题分析 这个问题很简单,主要是看对c中标准库函数的掌握程度,这里主要可以采用两个库函数实现:strcpy和memcpy。这里主要对 memcpy() --... 阅读全文

【转】堆,栈区别

2012-08-09 17:12 by coodoing, 357 阅读, 收藏, 编辑
摘要: 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!第一部分:堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 : 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化... 阅读全文