远征系列---离港篇(学杂记)

远征----离港

1.1 离港总动员

介绍了接下来的学习内容,
优点:引用(对应c语言的指针),const(对应#define),函数新引进了函数默认值和函数重载。
缺点:内存管理(得程序员自己负责)。

2.1 c++语言 引用

教程里面生动的将引用称作为给别人起别名(也可以说是外号)

不能只有引用(别名),引用必须初始化。

分为 普通,指针引用,结构体引用,函数引用

1普通
&b=a(改变是对b直接改变,不是&b改变)
Int a;
Int&b=a;
&是不是相当于一个让a与b等同的符号。

2指针引用(个人认为是难点)

教程中我明白了:
Int *p;P=&a;

Int *p=&a;
等同,就是连起来写。

3结构体引用

疑问:结构体为什么是图片上那么命名的(感觉和课本上的命名方式不一样)
个人觉得应该是这样子的

4函数引用

疑问:感觉int a和int &a是一样的, 为什么还要加上一个&。

3.1 const(比较好理解,记住格式别搞混就好)

Const intx=3;相当于固定住x的值
Const可用于指针
(const intp=&x或者int const p=&x 固定p p是自由的 如可以让p=&y,但不能p=5;
int*const p=&x或者int constp =&x固定p可以改变,可以通过这个来改变x的值)

4.1函数的新特性

1 函数默认值
有默认的参数值的必须写在最右端,不能写在中间。

在声明函数是可以输入参数值,在定义函数时不能输入参数值。
而且,图中的那几个例子输出的结果比较特殊的。
(如图 fun(20) 输出的是20 5 10
fun(20,30) 输出的是20 30 10
fun(20,30,40) 输出的是20 30 40)

2 函数重载(就是函数重名)
个人觉得没什么用,因为名字最好还是区分比较好,自己也不会搞混。
疑问:奇怪的是要是像void fun(int a,intb,intc=3)和void fun(double a,double b)的话,如果输入(1.2)的话电脑会辨别是哪一个吗
1算是double类型的吧

3 内联函数(节省时间,尤其是循环调用的时候)
使用是在声明的时候函数的最前面加入inline(其他不变)
使用在比较简单的函数,又是重复使用的时候,但是如果函数中有For循环,while循环。还有递归函数也不能用(递归函数:自己使用自己的函数)。

5.1内存管理

资源,操作系统,申请/归还(这就是内存管理)
个内存 块内存 注意
申请内存:new int *p=new int; int *arr=new int[10] 注意要判断内存是否申请成功
如果p==NULL,则申请失败
释放内存:delete delete p; delete []arr 在释放内存之后要使指针变空
如(p=NULL)

初始化:int *p=new int(要赋值的整形) 是括号
或者 int *p=new int; *p=要赋值的整形;

使用完后就要释放

疑问:
C语言的内存管理没学过(通过比较确实c++的表示方式比较简洁)
没学过当然就会有疑问了:
1.什么是内存管理:指软件运行时对计算机内存资源的分配和使用的技术
2.内存管理的目的又是什么:高效,快速的分配,并且在适当的时候释放和回收内存资源
可以想像一个很大的程序,当他执行时被操作系统调用,其运行需要的内存数据都被存到磁盘内的虚拟内存,只有需要用到的部分才被加载到主内存内部运行。

C++内存管理细说:(http://www.cnblogs.com/lancidie/archive/2011/08/05/2128318.html)

原文地址:https://www.cnblogs.com/zxlmhh/p/5185960.html