漫步云端

移动开发(Android、iPhone、Windows Mobile) | JAVA | C | C++ | .net | Objective C | 微软企业开发技术 | 嵌入式系统设计与开发
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2010年12月14日

摘要: 在 C++中,数组永远不会按值传递,它是传递第一个元素,准确地说是第 0个 的指针。 例如,如下声明 :void putValues( int[ 10 ] ); 被编译器视为 void putValues( int* ); 数组的长度与参数声明无关,因此,下列三个声明是等价的: // 三个等价的 putValues()声明 void putValues( int* ); void putValue... 阅读全文

posted @ 2010-12-14 23:09 charley_yang 阅读(6768) 评论(0) 推荐(0) 编辑

摘要: 把参数声明成引用,实际上改变了缺省的按值传递参数的传递机制,在按值传递时,函数操纵的是实参的本地拷贝。 一、引用参数的三种常见用法: 1.需要改变实参的值,比如swap()。参数是引用时,函数接收的是实参的左值而不是值的拷贝。这意味着函数知道实参在内存中的位置,因而能够改变它的值或取它的地址。 2.向主调函数返回额外的结果。如下例:3.向函数传递大型的类对象。例如:class Huge { pu... 阅读全文

posted @ 2010-12-14 00:49 charley_yang 阅读(17843) 评论(1) 推荐(0) 编辑

2010年12月12日

摘要: 系统为每个程序都提供了一个在程序执行时可用的内存池。 这个可用内存池被称为程序 的空闲存储区( free store) 或堆 (heap), 运行时刻的内存分配被称为动态内存分配(dynamic memory allocation)。 动态内存分配由 new 表达式应用在一个类型指示符 specifier 上来完成,类型指示符可以是内置类型或用户定义类型,new 表达式返回指向新分配的对象的指针... 阅读全文

posted @ 2010-12-12 15:30 charley_yang 阅读(704) 评论(0) 推荐(0) 编辑

2010年12月11日

摘要: 首先要明确sizeof不是函数,也不是一元运算符,他是个类似宏定义的特殊关键字,sizeof();括号内在编译过程中是不被编译的,而是被替代类型。 如int a=8;sizeof(a);在编译过程中,它不管a的值是什么,只是被替换成类型sizeof(int);结果为4. 如果sizeof(a=6);呢,也是一样的转换成a的类型,但是要注意 因为a=6是不被编译的,所以执行完sizeof(a=6... 阅读全文

posted @ 2010-12-11 23:17 charley_yang 阅读(3766) 评论(1) 推荐(2) 编辑

摘要: vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为了使用vector 我们必须包含相关的头文件 : #include vector 使用vector有两种不同的形式,即所谓的数组习惯和 STL习惯。 一、数组习惯用法 1. 定义一个已知长度的 vector : vector int ivec( 10 ); //类似... 阅读全文

posted @ 2010-12-11 16:33 charley_yang 阅读(93897) 评论(9) 推荐(27) 编辑

2010年12月10日

摘要: 1. 已知下面的数组定义 int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 }; 那么 只简单写 ia; 意味着什么呢 数组标识符代表数组中第一个元素的地址 它的类型是数组元素类型的指针 在ia这个例子中 它的类型是 int* 因此 下面两种形式是等价的 它们都返回数组的第一个元素的地址 ia; &ia[0]; 类似地 为了访问相应的值 我们可以取下列... 阅读全文

posted @ 2010-12-10 23:37 charley_yang 阅读(1107) 评论(0) 推荐(0) 编辑

摘要: 声明了一个 int 型对象 而如下形式 int ia[10]; 1. 我们必须为数组指定一个大于等于 1 的维数,维数值必须是常量表达式—— 即:必须能在编译时刻计算出它的值 这意味着非 const的变量不能被用来指定数组的维数 ,下面的例子包含合法的和非法的数组定义 extern int get_size(); // buf_size 和 max_files 都是 const const i... 阅读全文

posted @ 2010-12-10 23:07 charley_yang 阅读(8636) 评论(0) 推荐(1) 编辑

摘要: 1. 当表达式需要一个算术值时 布尔对象(如 found)和布尔文字都被隐式地提升成 int(正 如下面的例子) false 变成 0 而 true变成 1 例如 bool found = false; int occurrence_count = 0; while ( /* 条件省略 */ ) { found = look_for( /* 内容省略 */ ); // found 的值被提升... 阅读全文

posted @ 2010-12-10 22:46 charley_yang 阅读(8091) 评论(0) 推荐(1) 编辑

摘要: 1. 引用 reference 有时候又称为别名 (alias), 它可以用作对象的另一个名字。 引用类型由类型标识符和一个取地址操作符来定义 引用必须被初始化 例如 int ival = 1024; // ok: refVal 是一个指向 ival 的引用 int &refVal = ival; // 错误 引用必须被初始化为指向一个对象 int &refVal2; 一旦引用已经定义, ... 阅读全文

posted @ 2010-12-10 22:35 charley_yang 阅读(533) 评论(0) 推荐(0) 编辑

2010年12月9日

摘要: const是C++中引入的一个新的关键字,它为C++编程带来了很大的方便。指向const对象的指针和const指针是两个名字很接近的概念,对于初学者来说非常容易搞混,这里对它们进行区分。   1、指向const对象的指针   可以这样理解指向const对象的指针:指向const对象的指针就是一个指针,不能通过它来修改它所指向的对象的值  声明方法:const int *p;  const对象在初始... 阅读全文

posted @ 2010-12-09 23:33 charley_yang 阅读(676) 评论(0) 推荐(0) 编辑