计算机中内存中的每个位置都由一个地址标识。一般,临近的内存位置组合在一起为一组,这样的话,云存储的内存范围更大。指针的值就是保存内存地址的变量。
无论是计算机还是程序员都无法通过值的位模式来判断他的类型。值的类型是通过它的使用方法来确定的,也就是说,值的类型并非其本身所固有的一种特性,不能简单地通过一格值的位来判断他的类型。编译能够能够保证值的声明和值的使用之间的关系是适当的,从而帮助我们确定值的类型。
指针变量的值并非他所指向的内存位置所储存的值。我们必须通过间接访问来获得他所指向的位置储存的值。对一个“指向整形的指针”施加间接访问操作的结果将是一个整形。
NULL指针不指向任何东西的指针。他可以赋值给一个指针,用于表示那个指针不指向任何值。对NULL指针执行间接操作访问的后果因编译器而异,两个常见的后果分别为返回内存位置零的值以及终止程序。
在指针上可以执行一些有效的算术运算。你可以把一个整型值加到一个指针上也可以从指针上减去一个整型值。但是,指针运算只有作用于数组中其结果才是可预测的。对任何并非指向数组元素的指针执行算术运算是非法的。如果两个指针都指向同一个数组元素,那么他们之间可以相减。指针减法的结果经过调整,表示两个指针在数组中相隔多少个元素。