声明一个指针变量:
type *pType = NULL;
pType
有5个“属性”,分别是:
pType = (己址,己值,他址,他值,他型);
己址:即“自己的地址”
指针变量pType
作为一个变量,也有自己的地址,常见的代码写法是&pType
己址在一般的程序中不会被频繁地用到,如果要用的话,就涉及到“指针的指针”,这又是另外一个话题了,本文不讨论;
己值:即“自己的数据值”
指针变量pType
作为一个变量,也有自己的数据值,代码的写法是pType
。
也可以在己值上做加减法运算,常见的代码写法有pType + N
、pType - N
、pType2 - pType1
等。
他址:即“他人的地址”
指针变量pType
的己值,意义除了表示自己的数据值外,还表示了与pType
绑定在一起的type
类型的变量的地址。一般而言,指针变量pType
的己值与他址在数据值上是一样的。
将一个type
类型的变量与pType
绑定在一起的常见方式是:pType = &变量;
他值:即“他人的数据值”
一旦type
类型的变量与pType
绑定在一起,指针变量pType
可以通过一些代码写法,来获取type
类型变量的值,也就是“他值”。常见的代码写法有:*pType
、pType->
等。
而这些代码的写法:*(pType + N)
、*(pType - N)
、pType[N]
也是获取的“他值”,不过需要特别说明一下:
pType + N
你可以看成是:
type *pTemp = pType + N;
*(pType + N)
其实计算的就是指针变量pTemp
的“他值”。
*(pType - N)
就好理解了吧;
pType[N]
其实就是*(pType + N)
。
他型:即“他人的类型”
声明指针变量pType
时,前面的type
不是用来修饰pType
的“己值”的,而是用来修饰“他值”的,也就是说,type
不是说pType
的“己值”是一个type
类型的数据值,而是指pType
的“他值”是一个type
类型的数据值。
“他型”在代码中的作用,主要是计算pType + N
、pType - N
时,pType
要加上或者减去 ( N * sizeof(type) )
个字节。