第11章 指针
{% markmap %}
第11章 指针
指针变量
- 指针就是地址,指针变量就是存储地址的变量
- 新节点
- 指针变量的声明
int *p;
int *
的 * 表示这是一个指针变量,int
表示指针指向的值是整型
取地址运算符和间接寻址运算符
- 取地址运算符&
- 在一个变量前面加上&,就可以取到这个变量的地址
- 间接寻址运算符*
- 在指针前面加上*,可以取到这个指针所指向的值
指针赋值
指针的应用
- 指针作为函数的参数(应用一)
- 实参传入到函数当中有两种方式,一种是值传递,还有一种就是地址传递,靠指针来实现
- const修饰传参
void f(const int *p);
- 如果希望传入的指针的值不被修改,可以在前面加上const进行修饰
- ⭐扩展
- 1、
const int a;
、int const a;
- 2、
const int * a;
、int const * a;
- 3、
int * const a
- 4、
const int * const a;
、int const * const a;
- 1、
- ❗形参中
int a[]、int *a、int *const a
、const int a[]
int a[]
等价于int *const a
- const in a[] 等价于 const int * const a
- 对于形参来说,
int *a
和int a[]
差别不大,因为a传入进去一般不会修改。 - 为什么要加个形参中?
- 因为如果不是形参中
const int a[10]
和const int * const a
就会有所区别,int a[10]
和int *a
含义也不一样 const int a[10]
的const
会保护数组里每一个元素int a[10]
告诉编译器,预留10个内存空间,而int *a
则不会,因此不能随意访问后面的空间
- 因为如果不是形参中
- 指针作为返回值(应用二)
- ❗千万不要把函数的局部变量的地址给作为返回值,因为函数的局部变量出了函数之后就销毁了,地址就是无效地址。