指针的基本使用
只能用于存储地址
- 在64位编译器下,指针占用8个字节
定义指针变量
- 数据类型 * 指针名称;
- 数据类型:说明定义的指针变量能够保存申明类型的变量的地址
- 注意:指针变量是什么类型,那么将来就只能保存什么类型变量的地址
- 例如:指针变量是int类型,那么将来就只能保存int类型变量的地址
- *:没有任何特殊含义,仅仅是为了标示这是一个指针变量
- 指针名称:用于区分不同的指针变量
// 普通变量
int num;
num = 10;
// 指针变量
int *p;
// 将num的地址存储到p这个指针中
p = #
// 指针变量前的*号表示访问指针变量指向的那一块存储空间
// 也就是说 *p = num
*p = 55;
指针的注意点
- 指针只能保存地址
- 同一个变量可以有多个指针指向他
- 指针的指向可以修改
- 不要访问野指针
- 指针类型是什么类型,就只能指向什么类型的数据
多级指针(很少见,了解就行)
- 多级指针的操作,最简单的方法,就是通过几颗星来存储,就通过几颗星来访问
char c = 'a';
char *cp;
cp = &c;
char **cpp;
cpp = &cp;
char ***cppp;
cppp = &cpp;
/**
*cp == c;
*cpp == cp;
*cppp = cpp;
**cpp == *(*cpp) == *cp == c;
***cppp == **(*cppp) == *(*cpp) == *cp == c;
cp中存放的是c的地址
cpp中存放的是cp的地址
cppp中存放的是cpp的地址
*cppp 取出的时cpp
而cpp中存放的时cp的地址,所以*(*cppp)取出的是cp
而cp中存放的是c的地址,所以*(*(*cppp))取出的是c
*/