sizeof是一个关键字,单目运算符/操作符。
sizeof的作用是返回一个对象或者类型所占的内存字节数、判断变量或数据类型的字节大小。
数组的sizeof值等于数组所占用的内存字节数
使用&(取址运算符)可以得到内存地址,用sizeof查看各类型在内存中所占的字节; 如
sizeof依赖于编译器
数组越界:如果在获取时超出了数组的长度,就称为数组越界。如图,获取了下标为5的元素,获取到了不确定的值。
关键字const和static
const就是只读的意思,只在声明中使用,意即其所修饰的对象为常量((immutable)),它不能被修改,并存放在常量区。
const修饰的全局变量为只读,其值不可修改。如果在程序中企图对const修饰的变量进行修改,那么程序就会报错。
static用于声明静态变量,它的值会一直保留在内存中,不会因为作用域而销毁。
对于局部变量,static规定其为静态存储方式每次调用的初始值为上一次调用后的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见
sizeof返回的值是说某个类型的大小。所谓类型的大小是说存储某个类型大小的数据所需要空间。所以当我们需要动态分配空间来存储某种类型的数据的时候,可以利用sizeof来确定大小。也就是说静态成员数据不作考虑。
使用sizeof()计算类大小的一些基本原则:
(1)类的大小为类的非静态成员数据的类型大小之和,也就是说静态成员数据不作考虑;
(2)类的总大小也遵守类似class字节对齐的,调整规则;(参考5分钟搞定内存字节对齐)
(3)成员函数都是不会被计算的;
(4)如果是子类,那么父类中的成员也会被计算;
(5)虚函数由于要维护虚函数表,所以要占据一个指针大小,也就是4字节。
参考(https://blog.youkuaiyun.com/jiejinquanil/article/details/51445512)