指针的概念、定义和指针运算
内存空间的访问方式
- 通过变量名访问(定义一个变量就是将变量名与若干字节的内存空间结合起来,之后可以在这个名字的作用域范围内,用变量名访问内存空间)
- 通过地址访问
指针的概念(地址类型的变量)
- 指针:内存地址,用于间接访问内存单元
- 指针变量:用于存放地址的变量
指针变量的定义
- 例:
static int i;
static int* ptr = &i;
![94a78e1eef4d36c2c43b12d17efcc7c0.png](https://i-blog.csdnimg.cn/blog_migrate/87c8e4c7d732905dd2d8a429fc154b35.png)
&取地址运算符
定义指针类型的数据,用运算符*。
问:定义指针类型ptr,*ptr不就可以了吗?为什么前面还要加个int?
答:定义指针是不仅仅要说明它是指针,而且要说明它所指向的对象是什么类型,
因为将来要通过指针去访问对象,如果不知道指针所指的对象是什么类型,当你拿到起始单元的地址后,取数据出来的时候,就不知道应该取多少个字节。不知道类型就不知道它占的字节数,就不知道该一次性处理几个字节,所以在C++中要求定义指针的时候必须定义它指向的对象的类型。
使用指针变量
- 通过指针访问变量i的空间,例:
*ptr = 3;
![2207694116c8f4c200ff7a83ee4efaed.png](https://i-blog.csdnimg.cn/blog_migrate/b3f07eaae379933fc2ed11c2b9a371ae.png)
与地址相关的运算——“*”和“&”
- 指针运算符:*
- 地址运算符:&
指针运算和地址运算互为逆运算