指针
空指针
int * p = NULL; // #define NULL 0
int * p = nullptr; // #define nullptr 0野指针
int * p = (int *)0x3030; // 尽量避免这种写法const修饰指针
常量指针(const修饰int,修饰的是值):指针的指向可以修改,但指针指向的值不能改
int a = 10, b = 10; const int * p = &a; p = &b; // 正常执行 *p = 20; // 报错指针常量(const修饰p,修饰的是指针):指针的指向不能改,指针指向的值可以改
int a = 10, b = 10; int * const p = &a; p = &b; // 报错 *p = 20; // 正常执行const既修饰常量,也修饰指针
int a = 10, b = 10; const int * const p = &a; p = &b; // 报错 *p = 20; // 报错
const修饰形参,防止误改
struct Obj{
int value = 0;
}
void f(const Obj * obj) {
obj->value = 10; // 报错