地址算法也可以被认为是指针算法,因为操作涉及指针。
除了使用+和–来引用下一个和上一个内存位置外,还可以使用赋值运算符来更改指针包含的地址。
例如:
int a[5] = {22, 33, 44, 55, 66}; int *ptr = NULL; ptr = a; /* 指向第一个数组元素 */ printf("%d %x\n", *ptr, ptr); /* 22 */ ptr++; printf("%d %x\n", *ptr, ptr); /* 33 */ ptr += 3; printf("%d %x\n", *ptr, ptr); /* 66 */ ptr--; printf("%d %x\n", *ptr, ptr); /* 55 */ ptr -= 2; printf("%d %x\n", *ptr, ptr); /* 33 */
程序输出类似于:
22 febd4760 33 febd4764 66 febd4770 55 febd476c 33 febd4764
当指针递增时,内存地址将增加所指向的字节数。在上面的程序中,当使用递增运算符(ptr++)时,指针将增加4,因为指针指向一个int。
您还可以使用==、<和>操作符来比较指针地址。