C++指针练习

标签 c++ pointers

我在网上找到了以下关于 C++ 指针的完整练习,但我仍然无法理解它是如何工作的。

#include <iostream>
#include <cstring>

using namespace std;

void reverse(char *s, int n) {
    char *first = &s[0];
    char *last = &s[n-1];
    int k = 0;

    while(first < last){
        char temp = *first;

        *first++ = *last;
        *last-- = temp;

        k++;
    }
}


int main() {
    int n;
    char str[] = "Hello";
    cout << str << endl << endl;
    n = strlen(str);
    reverse(str,n);
    cout << str << endl;
    return 0;
}

我实在看不懂的部分是

*first++ = *last;
*last-- = temp;

最佳答案

指针基本上是内存中的地址,对于这种特定情况,它们指向内存中可以找到字符的地址。 *first 是地址处的值(即:字符),使用 ++-- 递增或递减指针,从而遍历内存以指向下一个/上一个字符。

*first++ = *last; 计算为:

  1. first 指向的内存地址/位置放入 last 指向的内存位置的值
  2. 自增first,使其指向下一个地址。

这相当于:

*first = *last;
first ++;

*last-- = temp; 计算为:

  1. 放入last指向temp值的内存地址/位置
  2. 递减last,使其指向上一个地址

我留给你做一个练习,找出哪两个操作是等价的:)

关于C++指针练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761766/

相关文章:

c# - 通过 .exe 文件名杀死一些进程

c++ - 在 DLL 中调用 LowLevelKeyboardProcedure

c++ - 指针数组栈实现

c++ - 当我使用 void 函数的返回值(通过转换函数指针)时究竟会发生什么?

c++ - ARM 架构中的指针处理和 Valgrind 方法

c++ - 如何让一个类通过作用域分配器?

c++ - 没有STL和动态内存分配的成员函数类

c - 阅读一个txt。以 (int float float string) 的格式并将值放入并行数组中

c - 什么是 C 中的常量指针数组?

c - 指针采用什么样的数据结构?