1.变量对应一个地址——如何访问地址?
直接存取:直达目的(钥匙开门)
间接存取:将地址集合在变量中,这个变量专门存放地址(将钥匙从钥匙库中取出,再开门)
变量会被系统分配一个内存,这个内存有个编号,叫地址,而地址自带指向性,因此也叫指针,给存指针的一个变量,也叫指针变量。
i_point=&i;
&i就是地址,i_point就是指针变量。&将变量i变成地址;
2.定义指针变量的基类型是数值的类型。
3.因为整数不是变量,因此不是指针,所以不能赋给指针变量。
4.引用指针变量时的一些interest
*i_point *&i 这是数值
&*i_point 这是地址
5.在进行数值运算时,可以交换数值,这时地址不变,也可以交换地址,这时数值不变。
int *p,*p1,*p2;//定义指针变量
p=p1,p1=p2,p2=p;//交换地址
*p=*p1,*p1=*p2,*p2=*p//交换数值
这里有一些问题
int *temp;
*temp=*p1
这里temp只是一个空壳,没有具体的值,不能在后面调用其数值。
因此有3种改正方案:
1.直接进行地址交换
2.不用地址,直接用数值
3.给temp一个值
6.其他问题
值传递只能从形参到实参传,不能反过来。变值的是形参,而非实参
因此,以交换值为例,换地址后,指针指向的值本身没有变化,即a还是a,b还是b,输出a,b,的值不变。所以可以改变指针变量所指向数值的值,如改变a,b的值,函数表面是交换地址,实质还是交换地址的值,因此把函数形参变量用指针,就可以不变指向,而改变指向对象,从而改变实参。
数组:本身就是一个指针,指向数组首元的值,且可以与指针变量互用。
a=p+n p++,
这表示a[n] ,*p表示a[n]的值,可做输出。
定义指针变量可赋数组初值。
p+1表示p的下一个变量
自己的一点体会,还望各位大佬指正。