乐趣区

关于程序员:变量与指针变量

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 与内存的硬件关系来说,数据线与地址线是不离开的。地址里必然是有数据的,数据也必须有一个地址空间。

退出移动版