指针
指针是指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
指针是变量,存放内存单元的地址(编号),地址是唯一标示一块地址空间的。。
在32位的机器上,地址是32个0或者1组成二进制序列,地址需要4个字节的空间来存储,所以一个指针
变量的大小是4个字节。
在64位机器上,有64个地址线,一个指针变量的大小8个字节。
指针的大小在32位平台是4个字节,在64位平台是8个字节。
指针的类型
指针的类型决定了该指针进行解引用操作时所访问的字节数/空间(指针的权限)。
指针的类型决定了指针+1-1/向前或向后走一步时的距离有多大,即跳过的字节数(指针的步长)。
指针与数组名
数组名表示的是数组首元素的地址。
可以把数组名当成地址存放到一个指针中,并使用这个指针来访问这个数组。
二级指针
二级指针是存放指针的地址的指针变量,即指向指针的指针。
指针数组
指针数组是存放指针的数组。
指针的运算
指针±整数
指针向前或向后移动一定的距离。
计算之后结果仍然为一个指针。
指针-指针
指针+指针是非法的,会编译报错。
指针-指针首先计算出两个指针的间隔数,然后再除以调整的权重(即数组元素类型的大小),得出的整数即为指针-指针的值。
只有当两个指针指向同一个数组中的元素时,才允许一个指针减去另一个指针。
指针的关系运算
只有当两个指针指向同一个数组中的元素时,才能进行关系运算。
当指针p和指针q指向同一数组中的元素时,则:
p<q,当p所指的元素在q所指的元素之前时,表达式的值为1,反之为0。
P>q,当p所指的元素在q所指的元素之后时,表达式的值为1,反之为0。
p==q,当p和q指向同一元素时,表达式的值为1,反之为0。
p!=q,当p和q不指向同一元素时,表达式的值为1,反之为0。