指针的定义:
指针是一个变量,用来存放地址的变量
指针的大小是固定的4/8个字节(32位平台/64位平台)
解引用:就是引用它指向的变量的值
int *p=&a,那么解引用就是:p==a。
从内存来讲,系统为指针分配内存空间,而引用与绑定的的对象共享内存空间,系统不为引用变量分配内存空间。
指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初值以后不允许再绑定对象。
指针的运算:
1.指针+或者-一个数,表示指针加减这个数的类型所占内存的整数倍
如 int *p=a;
p=p+2; // 在VC6.0里面,实际上p加了2 * 4=8
2.指针减去一个指针,表示两个指针之间所差的内存单元或者元素个数,两个指针相加没有意义
3.关系运算,如果定义了两个指针变量p和q,并且都已经初始化了,
如果p==q,则表示p和q指向同一个地址
p>q,则表示p指向高地址而q指向低地址
也经常拿p和NULL做比较,用来表示指针当前的状态,这在数据结构中应用非常广泛,不如说链表的查找等等
p1++是对地址进行加减整数
而(*p2)++, 我是定义了一个b变量,然后赋值给了10,然后把b的地址给了p2,*p2通过解引用得到的就是10,(*p)++ 相当于 10++ ,得到的就是11.
运行结果如下