
堆区:由new运算符申请内存,使用完记得释放
所属函数被调用时自动产生,存储在栈内存中
getSum()运行结束时销毁上面两个a,b
静态变量存储在全局区
跟踪新分配的内存的位置更困难。
普通局部变量:
1.代码中的位置:在代码块{}内部定义的变量,就是局部变量。包括方法参数列表定义的变量。
2.存储空间:存在栈内存中
3.作用范围:离他最近的大括号中间
4.生命周期:代码块执行的时候创建,执行结束销毁
5.注意事项:
a.局部变量必须先初始化再使用
b.同一个作用域中不能有同名变量
c.不同的作用域中的局部变量同名时,采用就近原则
普通全局变量:
1.代码中的位置:文件中,在函数外面定义的变量就是普通全局变量
2.存储空间:存在全局区
3.作用范围:当前的源文件及其他的源文件中
使用其他源文件中的全局变量时需要用extern声明
4.生命周期:整个程序运行的过程中
5.注意事项:
a.普通全局变量,如果不初始化,默认值为0
b.普通全局变量和普通局部变量同名,采用就近原则
2.53 静态局部变量和静态全局变量静态局部变量:在普通局部变量前加上static进行修饰
1.代码中的位置:在代码块{}内部定义的变量,用static修饰
2.存储空间:存在全局区
3.作用范围:离他最近的大括号中间
4.生命周期:整个程序进程
5.注意事项:
a.静态局部变量,如果不初始化,默认值为0
b.不同的作用域中的静态局部变量同名,采用就近原则
c.静态局部变量如果被初始化语句执行多次,只有第一次有效
静态全局变量:
1.代码中的位置:文件中,在函数外面定义的变量,且使用static修饰
2.存储空间:全局区
3.作用范围:只能在当前源文件中有效
4.生命周期:整个程序进程
5.注意事项:
a.静态全局变量,如果不初始化,默认值为0
b.静态全局变量的作用域只在当前源文件中
2.54 类型别名给已经存在的数据类型建立别称
区别:
其中pb不是float类型的指针
使用:
#define my_char char
typedef char my_char
注意别名和原类型的顺序
C++ clock() :返回程序开始执行后所用的系统时间
2.类型使用 clock_t 防止类型不统一
数组不能作为返回值返回
把功能相同或相似的函数放在同一个源文件中
.h 文件中存的是函数的声明
1.
3.
函数返回指针类型数据,返回一个地址
注意:不要返回局部变量的地址,局部变量当函数调用完毕就销毁了。
函数的内部修改外部变量的值
传递的内容为指针变量的地址
写一个遍历数组元素的函数,将数组作为参数传递进来,在函数中遍历数组元素
有问题:数组传递过后数组arr大小改变了
正确做法:传入数组首元素地址,和数组大小
先写头文件,再写源文件
使用:
输出值为:2
字符串作为函数参数
优化:
在字符串中查找子字符串
优化:
使用循环进行优化:
计算两个结构体求和
缺点:当结构体比较大时会占用较大的内存空间,考虑直接传地址
运行结果:
一般方法:
使用递归:
递归一定要有出口
遇到出口后逐次返回。
使用for循环完成:
使用递归:
输出:函数名就是函数的地址
声明:加*和括号()
*pf表示获取函数内容 pf表示函数地址(等于函数名)
优化:传递函数指针给estimate()函数
程序编译阶段,用1024替换所有的MAX
宏名都大写
使用宏函数的注意事项:
保证运算的完整性,使用括号
宏函数使用场景:把频繁调用的和短小的函数,封装成宏函数
优点:以空间换时间
相当于每一处调用的地方都复制了一份代码
宏函数缺陷:
1.需要加括号保证运算完整
2.
1.
2.
输出:12
在两处进行了替换,++ 了两次
也是用空间换时间
声明和定义时都要加 inline 关键字
是否编译为内联函数由编译器决定
比指针更加简单好用
修改rnum 就是修改 num
地址都是相同的
表示用b给ref赋值,而不是改变引用
按值传递,按指针传递,按引用传递
左值:可以出现在赋值符号左边的值
按值传递:
按引用传递:
引用作为函数返回值是可以修改的
加const防止被修改
提高使用函数的灵活性
运算符重载中使用
类型和顺序
const普通变量按值传递,不算重载关系
指针传递和引用传递可以用const进行重载
编译完后函数名称不一样了
编译出错,看下回分解
优化:
math.h头文件
c文件和c++文件不能同时使用这个头文件
希望:c文件调用的时候不加extern 而c++文件调用的时候加上
使用条件编译
g++ main.cpp fun.cpp存储持续性
const修饰的全局变量:
动态存储持续性:动态内存是由new和delete运算符进行控制的,而不是由作用域和链接性控制的
使用运算符重载语法
声明:
调用:
把实体抽象成对象
程序由对象组成
创建对象,通过调用对象实现功能
属性+行为
数据表示和 操纵数据的方法
数据 和 函数
方法==函数
对象是类的具体体现
一个类可以有多个对象