1. 指针表示地址
- 声明时:当你声明一个指针变量时,这个变量本身存储的是一个地址。例如, int *p; 这里的 p 是一个指针变量,它被用来存储一个 int 类型变量的地址。
- 作为函数参数传递时:当你把一个指针作为函数参数传递时,你传递的是地址。例如, void func(int *ptr); 这里的 ptr 在函数调用时接收的是一个地址。
- 取地址操作符 & :当你使用取地址操作符 & 时,你得到的是变量的地址。例如, int a; int *p = &a; 这里 &a 得到变量 a 的地址,并将其赋给指针 p 。
2. 指针表示值(解引用)
- 解引用操作符 * :当你使用解引用操作符 * 时,你访问的是指针所指向的地址中存储的值。例如, int a = 10; int *p = &a; int b = *p; 这里 *p 访问的是 p 所指向的地址(也就是 a 的地址)中存储的值,所以 b 的值为 10 。
- 在表达式中使用解引用的指针:当你在表达式中使用解引用的指针时,你操作的是指针所指向的值。例如, *p = 20; 这里 *p 表示的是 p 所指向的地址中的值,这条语句将 20 赋给了 p 所指向的变量。
总结来说,指针变量本身存储的是地址,而当你使用解引用操作符 * 时,你访问的是指针所指向的地址中的值。