代码改变世界

Essential c++阅读笔记-第3章 数组和vector的find方法(哨兵指针)

2012-11-28 23:45 by kennyMc, 707 阅读, 0 推荐, 收藏, 编辑
摘要:#include <iostream>#include <vector>#include <string>using std::cout;using std::endl;using std::vector;using std::string;#define arr_size 5//vector模版,vector引用形参template<typename T>const T* find(const vector<T> &vec,int &value){ for(vector<typename T>::size 阅读全文

函数返回const引用形参的指针问题

2012-11-28 22:55 by kennyMc, 1066 阅读, 0 推荐, 收藏, 编辑
摘要:int fun(const int &value){return value;}//okint * fun1(const int &value){return &value;}//error C2440: “return”: 无法从“const int *”转换为“int *”const int * fun1(const int &value){return &value;}/ok无意中看书发现的问题,才看c++没多久,一直不清楚为什么第二个函数必须加一个const,想了很久想通了。#include <iostream>#include &l 阅读全文

C++Primer阅读笔记-第9章-函数 形参

2012-11-26 18:26 by kennyMc, 288 阅读, 0 推荐, 收藏, 编辑
摘要:参数传递非引用形参非引用类型的形参是通过复制对应的实参实现初始化(实参副本来初始化形参),函数内部无法修改实参本身,只能修改局部的副本值。1:指针形参函数的形参是指针类型,也是用实参的指针副本来初始化形参,改变形参指针的指向地址不会影响到外面的实参,但是如果函数内形参和外面实参的指针都是指向同一个内存地址,那么修改形参指针指向内存地址的值,将会影响到实参。int v=4;void Fun(int *p){ cout<<*p<<endl;//输出5 *p=11; cout<<*p<<endl;//输出11,这里修改了形参指针指向地址的值,地址和实参 阅读全文

C++Primer阅读笔记-第4章-数组

2012-11-21 23:12 by kennyMc, 231 阅读, 0 推荐, 收藏, 编辑
摘要:4.1.1 数组的定义和初始化数组的维数必须使用值大于等于1的常量表达式定义(只能包含整形面值常量,枚举常量)。非const变量以及要运行阶段才知道其值的const变量都不能定义数组维数。int GetSize(){ return 10;}int main(){ int i=10; //int arr[i];//error: 应输入常量表达式 const int i1=GetSize(); //int arr1[i1];//error: 这里i1需要运行时才知道其值,所以不能作为数组的维数 //int arr1[GetSize()];//error: 这里也... 阅读全文

C++Primer阅读笔记-第3章-标准库类型 bitset类型

2012-11-18 16:50 by kennyMc, 268 阅读, 0 推荐, 收藏, 编辑
摘要:C++Primer阅读笔记-第3章-标准库类型 bitset类型bitset类型是用来处理位集的,属于标准库。bitset位置编号是从0开始的,假如bitset是32位的,那么从0到31就是从低阶位到高阶位,类似于寄存器。1.用unsigned值初始化bitset对象#include<iostream>#include<bitset>using std::cout;using std::endl;using std::cin;using std::bitset;int main(){ //这里6的2进制是00000000 00000110,从高位到低位 //假如i被存储 阅读全文

C++Primer阅读笔记-第3章-标准库类型vector

2012-11-17 00:44 by kennyMc, 199 阅读, 0 推荐, 收藏, 编辑
摘要:标准库负责vector的存储元素的内存管理,vector是一个类模版,感觉就是net中的list<t>。vector对象重要属性就是可以在运行时高效的添加元素,vector不会预先的分配合适的内存空间,而且动态的根据添加元素分配内存空间。vector对象的操作#include <iostream>#include <vector>using std::cin;using std::cout;using std::endl;using std::vector;int main(){ //这里初始化一个包含10个0的vector对象 vector<int& 阅读全文

汇编语言(王爽)笔记-第二章 寄存器2.1-2.3

2012-11-17 00:39 by kennyMc, 599 阅读, 0 推荐, 收藏, 编辑
摘要:CPU由运算器(进行信息处理),控制器(控制各种器件进行工作),寄存器(进行信息存储)等构成,这些器件靠内部总线连接,外部总线负责CPU和其他主板上的器件连接。8086CPU有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。2.1 通用寄存器8086CPU的所有寄存器都是16位的,AX,BX,CX,DX这4个寄存器通常存放一般性的数据,所以叫通用寄存器。以AX为例,一个16位的寄存器可以存储一个16位的数据,16位寄存器可以存储65536个二进制,从0000000000000000到1111111111111111(0-65535)。8086 阅读全文

C++Primer阅读笔记-第3章-标准库类型 迭代器

2012-11-13 15:36 by kennyMc, 291 阅读, 0 推荐, 收藏, 编辑
摘要:迭代器是一种检查容器内元素并遍历元素的数据类型,标准库为每一种标准容器定义了一种迭代器类型。vector迭代器类型的定义:vector<int>::iterator iter;这里iter的数据类型是由vector<int>定义的iterator类型。begin和end操作begin返回迭代器指向的第一个元素,end返回迭代器指向vector对象末端元素的下一个,表明它指向了一个不存在的元素。迭代器通过使用解引用操作符来访问迭代器所指向的元素。迭代器通过自增操作移动到下一个元素。注意:不能对end操作符返回的迭代器进行解引用或者自增。#include<iostre 阅读全文

C++Primer阅读笔记-第3章-标准库类型string

2012-11-12 23:59 by kennyMc, 286 阅读, 0 推荐, 收藏, 编辑
摘要:string和vector是标准库中比较重要的2个类型。3.1 命名空间的using声明std::cout,::是域操作符,含义是右边操作数的名字可以在左边操作数的作用域中找到。类似于NET中的命名空间,cout是命名空间std中定义的。使用using声明可以字节引用名字,std::而不需要再引用该名字的命名空间。#include <iostream>using std::cout;using std::endl;int main(){ cout<<"Kenny"<<endl; system("PAUSE"); ret 阅读全文

汇编语言(王爽)笔记-第一章 基础知识

2012-11-10 23:33 by kennyMc, 277 阅读, 0 推荐, 收藏, 编辑
摘要:存储单元:存储器被分为若干个存储单元,每个存储单元从0开始顺序编号,一个存储器有128个存储单元,编号从0-127。存储单元存储一个字节,也就是8个bit(8个二进制位),一个存储器有128个存储单元,存储128个字节。地址总线CPU通过地址总线来指定存储单元的,假如地址总线有10根,一根线只能有2种状态,高电平和低电平,二进制就是1和0,10根线可以传送10个二进制,10个二进制表示范围是0-1023(地址从0开始),2的10次方(1024)。也就是10根总线寻址最大值为1023。一个CPU有N根地址线,这个CPU的地址总线宽度为N,CPU最多可以寻找2的N次方个内存单元。数据总线CPU和内 阅读全文