指针热身:
#include <stdio.h>
int main (void)
{
int * p ; // p是变量的名字,int * 表示存放的是int变量类型的地址
// int * p ; 不表示定义了一个名字叫做 * p的变量
// int * p ; 其中票p是变量名,p变量的数据类型是int * 类型
所谓int *类型实际就是存放int变量地址的类型
int i = 3 ;
p = & i ; // 正确
// p = i ; // error,因为类型不一致,p只能存放int类型变量的地址,不能存放int类型变量的值
// p = 55 ; // error,原因同上
return 0;
}
① 其中 p = & i ; /* 1. p保存了i的地址,因此p指向i
2. p不是i,i也不是p,更准确的说,修改其中任何一个变量的值,都不影响对方的值
3. 如果一个指针变量指向了某个普通变量,则
* 指针变量 就完全等同于 普通变量
例如: 如果p是指针变量 ,并且p存放了普通变量i的地址,则p指向了普通变量i,
* p 就完全等同于 i
或者说,在所有出现 * p 的地方都可以替换成 i
在所有出现 i 的地方都可以替换成 * p
* p 就是以p的内容为地址的变量
*/
②指针就是地址,地址就是指针
地址就是内存单元的编号
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
但是要注意,通常我们叙述是会把指针变量简称为指针,实际他们含义并不一样