Essential c++2.2调用函数
来源:互联网 发布:ipad不能用淘宝怎么办 编辑:程序博客网 时间:2024/04/30 20:53
本节讲了一个冒泡排序,主要讨论的是传值,传址。这一点我基本已经懂了,所以就写一个冒泡排序的正确程序。
#include<iostream>#include<vector>using namespace std;void display(vector<int> vec){ for(int ix=0;ix<vec.size();++ix) cout<<vec[ix]<<' '; cout<<endl;}void swap(int &val1,int &val2){ int temp=val1; val1=val2; val2=temp;}void bubble_sort(vector<int> &vec){ for(int ix=0;ix<vec.size();ix++) for(int jx=ix+1;jx<vec.size();jx++) if(vec[ix]>vec[jx]) swap(vec[ix],vec[jx]);}int main(){ int ia[8]={8,34,3,13,1,21,5,2}; vector<int> vec(ia,ia+8); cout<<"vector before sort:"; display(vec); bubble_sort(vec); cout<<"vector after sort:"; display(vec);}
当我们调用一个函数时,会在内存中建立一块特殊区域,称为“程序堆栈”这块特殊区域提供了每个函数参数的储存空间。提供函数所定义的每个对象的内存空间。。。我们称为局部对象,一旦函数完成,这块内存就会被释放掉。
将参数设置为reference的理由:首先,能够对传入的对象进行修改,其次,降低复制大型对象的额外负担。
也可以将vector以pointer形式传递。这和一reference传递的效果相同:传递对象的地址,而不是副本。但是用法不同,重新写display()
void display(const vector<int> *vec){ if(!vec) { cout<<"display():the vector pointer is 0\n"; return; } for(int ix=0;ix<vec->size();ix++) cout<<(*vec)[ix]<<' '; cout<<endl; }
作用域及范围:
函数内定义的对象,只存在于函数执行期间。如果将这些所谓的局部对象的地址返回,会导致运行错误。
动态内存管理:
不论是局部还是全局,都是由系统自动管理。第三种储存期形式称为dynamic extent(动态范围).其内存由程序的空闲空间分配而来,有时也称为堆内存heap memory。这种内存由程序员自行管理,其分配通过new来完成。释放通过delete表达式完成。
int *pi;pi= new int;pi=new int(1024);//指定初值int *pia=new int[24];//pia会被初始化为数组第一个元素的地址,c++没有提供任何语法让我们得以从heap分配数组的同时为其元素设定初值。delete pi;'delete [] pia;//无需检查pia是否为0,编译器会帮我们检查//不用delete的话heap分配的对象永远不会被释放称为memory leak。
0 0
- Essential c++2.2调用函数
- 【essential c++】模板函数编程练习2_5
- 快速阅读《Essential C++》
- Essential C++
- 重读《Essential C++》心得
- 垃圾《Essential C++》
- 《Essential C++》笔记1
- 读《essential c++》有感
- 《Essential C++》 基础知识
- 《Essential C++》碎片
- 《Essential C++》随笔一
- <Essential C++> Learning
- 《Essential C++》读书笔记
- 《Essential C++》泛型之 模板函数 Template Functions 与 重载函数 Overloaded Functions
- 调用C函数
- C调用汇编函数
- C函数调用机制
- C 函数调用测试
- Java集合类
- JS的Object类的属性和方法
- 你们公司有职业通路图吗
- 去掉html代码字符中的标签符号
- 3.6 线性表的链式存储结构
- Essential c++2.2调用函数
- 20161012
- js中==比较符的原则
- 【计算机常见问题】WIFI能连上,但是不能上网。(能ping通外网,但无法打开网页)
- 自定义Button实现倒计时效果
- c!!#获取系!!!统启!!!!动!后经!过的时!!!!间
- iscsi用gfs2文件系统实现磁盘共享
- python学习笔记一
- 349. Intersection of Two Arrays