int a ,int *b
上述代码中,a示意变量,确切说是整型变量int。*b示意指针变量,确切的说是整型指针变量。它们之间有什么区别?

a=2
下面的代码能够了解为数值2存储在变量a中,到底存到那里了?

相熟电脑的应该分明,软件是在硬件上运行的。没有硬件,软件也就没有方法工作。硬件包含那些?硬盘,CPU,内存等等。一般来说,CPU的硬件构造分为地址线与数据线,也就是地址与数据。a在这里就是地址,2在这里就是数据。数据写到地址里,也就是存储到了内存。

b=2
下面的代码,也是数值2写入到地址b中,从CPU与内存硬件这个角度来说a与b没有区别。留神,(b)这个形容硬件是了解不了的。因为计算机可能了解的只有0与1的组合,也就是二进制。谁能了解(b)这样的形容?编程语言,例如C语言。

对于C语言来说,地址b里有一个数值2。而后,C语言读取数值2,依据(*)形容,把数值2当做地址,再到内存地址为2的地位,把地址2的内容读出来做为数据。总结一下,指针会读两次内存地址。第一次从内存读出来的数值,被当做新的内存地址再一次读数据。

b=&a
一般来说,不容许间接给指针变量b写数据2。当然,极非凡状况下也是能够的。失常状况是把变量a的地址写给变量b。(&)这个符号是取地址符号。(&a)的意思是读取a的内存地址。

a,&a
依据后面的定义,a是取数据,&a是取地址。所以,a在这里即示意数据也形容地址。对于CPU与内存的硬件关系来说,数据线与地址线是不离开的。地址里必然是有数据的,数据也必须有一个地址空间。