[c++]从完全不会到似懂非懂

笨喵敲代码 / 2023-05-03 / 原文

1. 指针

1.1 指针常量

使用int * const p = &a;的模式,指针常量是常量,所以p对应的常量为a的地址,因此a可变,但地址不可变。

1.2 常量指针

使用const int *p = &a的模式,其实这里和const无关,p只是个指针,该指针的类型是const int类型,因此p可以修改指针指向其他的const int类型,但无法修改指向的内存中的值(可以通过其他的引用来修改,const可以指向非const,非const不可指向const)。

2. 结构体

结构体const

为了防止在函数中修改原本的结构体内容,因此需要将函数的形参声明为const类型,即const struct student *p,也就是p指针的类型是const struct student *类型,因为无法修改结构体。联想到Android开发中的局部变量final修饰,表示以后对该变量仅有只读操作,强调只读性。