static关键字的作用
- 全局静态变量:在全局变量前加上 \(static\),该变量作用域从定义该变量开始到文件尾结束。
- 局部静态变量:在局部变量前加上 \(static\),该变量作用域只在该语句块或函数内。
- 静态函数:函数默认都是 \(extern\) 类型的,在工程内声明某个函数,若其他 \(cpp\) 文件中同名函数,则会引起冲突。在函数前加上 \(static\) 可以保证该函数只被该 \(cpp\) 文件可用。
- 类的静态成员(函数):在类成员(函数)前加上 \(static\),该成员(函数)则是所有对象的共享成员(函数),可用直接通过 <类名> ::<静态成员(函数)> 调用。 类名>
指针和数组区别
- 指针保存数据的地址,数据直接保存数据。
- 指针先得到地址,在通过地址访问数据,数组直接访问数据。
- 同类型指针可以直接赋值,数组只能一个个赋值。
- 指针常用于动态数据结构,数组则用于固定数目,类型相同的元素。
- 指针的内存分配通过 \(malloc、new、free、delete\) 动态分配,数组的内存在编译时分配好。
- 64位系统下,指针的 \(sizeof\) 都是8,数组的 \(sizeof\) 取决与数组所占空间的内存。
野指针
指向已删除的对象或者没有访问权限的内存的指针。
主要成因有三:指针没有被初始化、指针被 \(delete\) 或者 \(free\) 后没有置为 \(NULL\)、指针操作超出了所指对象作用范围。