记录以下几点:
const int m=7;
:整型变量m的值为固定值7,不可改变const int* p1 = &a;
:*p1=b
p2=&b
合法int* const p2 = &a;
:*p2=b
合法,~~p2=&b
~~不合法 int a = 7;
int b = 8;//===左定值,值(*p1)不可变 (常量const指针*)
const int* p1 = &a;
p1 = &b;//ok
//*p1 = b; // error!//===右定向,指向(p2)不可变 (指针*常量const)
int* const p2 = &a;
//p2 = &b; // error!
*p2 = b;//okconst int* const p3 = &a;//指向常量的指针常量
函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但会破坏此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制)。static 关键字则可以很好的解决这个问题。
静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。
<类名>::<静态成员名>
,非静态成员引用**必须**与特定对象相对对象.成员名
#include <iostream>using namespace std;class Point{public:
Point() { m_x++; }
~Point() { m_x--; }
void init()
{
output();//非静态函数可以调用用静态函数,但反之不能
}
static void output()
{
cout << m_x << endl;//static类型的m_x
}private:
static int m_x;};static int x;//类外静态变量可以不初始化直接用int Point::m_x = 0;//类的静态成员变量必须先初始化再使用void main(){
x++;
Point pt;
pt.init();//非静态成员只能使用pt.output()
Point::output();//静态成员也可以使用pt.output()}
参考:https://blog.csdn.net/morewindows/article/details/6721430
int* const p
,指向int型的常量指针 ,它不能在指向别的变量)
没有const引用(没有int& const a
这种形式,引用本身即别名不可以改变,这是当然的)int **p
合法)
是引用只能是一级(int &&a
是不合法的)sizeof (指针
)”得到的是指针本身的大小
“sizeof (引用)
”得到的是所指向的变量(对象)的大小参考:https://blog.csdn.net/wsq119/article/details/82154305
最高有效字节在最前面的方式称为大端法(先存储高位),例如假设变量x类型为int型,位于地址0x100的地方,其16进制值为0x12345678
,地址范围为0x100到0x103字节。
对于大端法的机器来说(先存储高位0x12
):
0x100 | 0x101 | 0x102 | 0x103 |
---|---|---|---|
12 | 34 | 56 | 78 |
对于小端法的机器来说(先存储高位0x78
):
0x100 | 0x101 | 0x102 | 0x103 |
---|---|---|---|
78 | 56 | 34 | 12 |
参考:https://www.cnblogs.com/broglie/p/5645200.html