在我学习线性表时发现,有时参数传参需要&符号,有时不需要,这让我有些糊涂,经过学习,我整理了一下,下面是我的理解
首先我们先编写一个示范案例
得到的输出结果
观察运行结果我们发现 b 与 &a 的输出结果相同,a 与 *b 的输出结果相同
这是为什么呢?
这里我们通过以下图式理解
在定义过程中我们定义了两个变量,分别是整型变量a与整形指针变量b(b中储存的地址指向的单元中的数据是整形数据)
我们知道变量本质上是一块储存单元,c编译器通过这个储存单元的地址来访问其中的数据
所以变量可以代表两个值:存储单元的地址 和 存储单元中保存的数据.
为了指明它俩,c语言中规定了用a表示保存的数据 &a表示储存单元的地址(&符号也叫做取地址符号)
这里我们看指针变量 b 在其中我们储存的数据是一串地址,(指针变量b本身也有自己的地址)
综上所述
int a=100;定义一个整形变量a,在其中存储数据100
int *b=&a;定义一个整形指针变量b,在其中存储变量a的地址
a表示的是a储存单元中存储的数据
b表示的是变量a的地址
&a表示的是变量a的地址
*b表示的是b中存储的地址指向的存储单元中的数据,
&b表示的是指针变量b自己的地址
总结
对于C语言的学习中,要时刻保持内存的概念,每个内存都有自己的地址,而c语言中用指针变量来存放地址,通过指针去寻找储存数据的内存空间,以此来做到数据的读取与修改.
上述内容若有不妥,请大佬赐教.
————————————————