0. 概念
- 理解:专门用来
保存地址
的,占用8
个字节int main() { int a = 10; int *ap = &a; printf("%p\n", &a); printf("%p\n", ap); return 0; }
1. 定义
- 形式
格式:数据类型 *变量名称 1. 数据类型:用来说明指针变量能够保存 什么类型的变量 的地址; 当用指针去取值的时候,系统会自动根据指针的类型来确定应该取多少个字节中的值 2. *:没有任何特殊含义,仅仅是为了标示这是一个指针变量 3. 变量名称:用于区分不同的变量 int num = 10; // 将 num 的地址存储到 p 这个指针中 int *p = # printf("%p\n", &num); printf("%p\n", p); // 指针变量前的 * 号代表访问指针变量指向的那一块存储空间 *p = 55; printf("num = %i\n", num);
- 多级指针
1. 定义 (1) 拷贝需要指向的变量的数据类型和变量名称 (2) 在数据类型和变量名称之间加上一颗星 (3) 修改变量名称 2. 访问 通过几颗星来定义,就通过几颗星来访问 3. 作用 用指针来保存指向其它变量的指针的地址 char c = 'a'; char *cp = &c; char **cpp = &cp; char ***cppp = &cpp; printf("%c\n", c); printf("%c\n", *cp); printf("%c\n", **cpp); printf("%c\n", ***cppp);
2. 作用
- 方式:可以通过
指针
来访问
地址,进行相关操作
指针.png
3. 注意
- 不要访问野指针,可以赋值为
NULL
- 指针只能保存地址
- 指针的指向可以修改
int a = 66; int b = 88; // p 保存 变量 a 地址 int *p = &a; *p = 88; // p 保存 变量 b 地址 p = &b; *p = 66; printf("%i\n", a); printf("%i\n", b);
- 同一个变量可以有
多个指针
指向
它int num = 10; int *p = # *p = 66; int *pOne = p; *pOne = 88; printf("%i\n", num);
- 指针类型是什么类型,就只能指向什么类型的变量
int num = 10; char charValue = 'l'; double doubleValue = 9.9; int *p = # char *pOne = &charValue; double *pTwo = &doubleValue;
网友评论