以前对指针这一块的知识点总是停留在表面的理解,往深了思考就感觉什么都不懂,最近在学习C++的时候,也总是一头雾水,所以为了解决这些问题,查阅资料总结了一下。
*和&的概念
*:是解引用运算符,他的作用是将一个指针解引用,也就是获取指针所指向内存地址的内容
&:是取地址运算符,它的作用刚好与解引用运算符相反,是获取一个变量的地址
下面通过小例子来阐述他们的概念和他们之间的关系
int a = 10 ;
int * p;
p = &a;
关于引用
首先我们来探讨一下a,我们都知道a是一个int变量,本质上说a代表一个存储单元。在计算机中,CPU通过该存储单元的地址访
问该单元中的数据,所以a应该代表两个值才对:一个是存储单元的地址,另一个就应该是这个地址里面的数据。但是如果我们
就这样用a的话,系统并不知道我们需要用它的哪个值,这样就会产生二义性。所以为了消除这种二义性,C语言就规定了a表示
存储单元中的数据,&a表示存储单元的地址。
关于指针
int * p ; //定义一个int类型的指针p
所以我们知道p现在是一个指针
p=&a;
此时,p代表指针所指对象的地址,也就是说p现在就是a的地址
*p就代表指针所指对象的地址值,也就是a的值10