Menu
CoddyTech

算术运算:操作

Coddy C++ 指针 课程的第 4 课,共 14 课。

++ / --

递增或递减指针会使它移动到相同数据类型的下一个或上一个内存位置。当我们有一个数组,并将指针设为指向第一个元素时,这非常有用。每递增一次,指针就向右移动一个元素。

int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr++;
cout << *ptr << " ";
ptr--;
cout << *ptr;
Output:
1 2 1

如你所见,递增或递减指针时,它会移动到相同类型的下一个或上一个内存位置。在本例中,就是数组中的下一个或上一个元素。


+= / -=

加上或减去大于 1 的数,可以帮助我们更快地移动,一次移动多个元素。

int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr += 4;
cout << *ptr << " ";
ptr -= 2;
cout << *ptr;
Output:
1 5 3

n = p2 - p1

指针还可以进行一项有用的操作,就是计算它们之间有多少个元素。我们可以通过计算它们的差来做到这一点。

int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
int *ptr2 = &list[4];
cout << "Between " << *ptr << " and " << *ptr2
 << " there's " << ptr2-ptr << " elements";
Output:
Between 1 and 5 there's 4 elements

我们可以用这 3 种技巧,通过指针执行许多有用的操作,并解决日常任务中的问题。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

challenge icon

挑战

简单

给定以下整数数组:

int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};
  • 创建一个指针 ptr1,让它指向数组的第一个元素。
  • 创建一个指针 ptr2,并将 ptr 的值赋给它
  • 递增 ptr2,使其移动到第四个元素
  • 创建 ptr3,并将 ptr2 的值赋给它 
  • 将 ptr3 递减 2 个位置
  • 按以下格式,使用指针相减计算并输出数组中第一个元素和最后一个元素之间的元素数量:There are {elements} elements between {first} and {last}

亲手试试

#include <iostream>

using namespace std;

int main() {
    
    int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};
    
    // 输入 ptr1 的代码
    
    // 输入 ptr2 的代码
    
    // 输入 ptr3 的代码
    
    // 输出指定的消息
    
    
    
    // 不要修改以下任何内容
    // ---------------------------------

    cout << "*ptr1 -> " << *ptr1 << endl;
    cout << "*ptr2 -> " << *ptr2 << endl;
    cout << "*ptr3 -> " << *ptr3 << endl;
    
    return 0;
}

C++ 指针中的所有课

自己练习: C++ 在线编译器