地址与指针

地址

内存中有存储单元的唯一编号(用二进制编码,十六进制表示)

例如:

int i,j,k;
scanf("%d%d%d",&i,&j,&k);
        ⬇ ⬇ ⬇
        3 6 9 
printf("%d%d%d",&i,&j,&k);

其中:

地址

内存

....

2004

i

2008

j

2012

k

.....

直接访问:已知变量的地址,去访问变量里的数据。

间接访问:不知道变量的地址,去其他变量哪里获取,才能访问。

eg:

int i; //int表示整型,名为p的整型指针变量,只能存放int型普通变量的地址。
int *p; //定义指针变量,p表示变量名字,*表示指针(用来修饰在后面的p)
p = &i; //对指针变量进行初始化:p保存着(普通整型变量i)的地址p就指向了i
*p = 3;//等价于:i=3; (p=3是错误的)
printf("%d",*p);//也就等价于:printf("%d",i);

总结

牢记三句话:

  1. 若p保存了i的地址

  2. 则p就指向了i(即:建立起了合法的指向关系)

  3. *p就是i(即:进而实现引用)

是引用运算符,*p即为以p的内容为地址的变量!*p和i成为了同一个概念!

注意:对指针来说,建立指向关系只是手段,实现指针的引用才是目的!

指针:通过他能找到以它的内容为地址的变量,指针和地址是同一个概念:指针就是地址,地址就是指针,指针和地址完全等价!!

指针和指针是两个完全不同的概念(水和杯子的关系)

指针变量就是存放地址的变量!!

注意:通常我们叙述时,常把指针变量简称为指针姑且:应给语境及其上下文进行正确的解读!

yukikaze nano desu!