C++语言程序设计

在C++中，指针也能与整数作加减运算，即让指针变量加一个整数或减一个整数。但指针运算与整数的运算并不相同，它与指针所指向的变量的大小有关。例如：
char *str = "HELLO";
int nums[] = {10, 20, 30, 40};
int *ptr = &nums[0]; // 指向nums数组第一个元素
假定一个int型变量占用的内存空间是4个字节。在上例中，str++使str移动一个字符（一个字节），指向"HELLO"的第二个字符；而ptr++使ptr移动一个int型数（即4个字节），指向数组的第二个元素，如图7-11。
所以，"HELLO"的元素可以通过*str、 *(str + 1)、 *(str + 2)等引用，nums的元素可以用*ptr、 *(ptr + 1)、*(ptr + 2)、*(ptr + 3)等引用。
在C++中，两个相同类型的指针也允许作减运算。例如：
int *ptr1 = &nums[1];
int *ptr2 = &nums[3];
int n = ptr2 - ptr1; // n变为2
在处理数组元素时，指针运算是非常方便的。例如：
void CopyString (char *dest, char *src)
{
while (*dest++ = *src++);
}
这个循环是将src指向的内容赋给dest指向的内容，然后，两个指针分别加1。当src的结尾符被赋给dest时，条件表达式变为0，即为假，循环结束。