c++ - 如何将指针重置为特定的数组位置?

标签 c++ pointers

我是一个全新的编程小白,请原谅我的无知。我的作业状态:

编写一个程序,声明一个包含 10 个整数的数组。编写一个从键盘接受 10 个值的循环,并编写另一个显示这 10 个值的循环。不要在两个循环中使用任何下标;仅使用指针。

这是我的代码:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
     const int NUM = 10;
     int values[NUM];
     int *p = &values[0];
     int x;
     for(x = 0; x < NUM; ++x, ++p)
     {
         cout << "Enter a value: ";
         cin >> *p;
     }  
     for(x = 0; x < NUM; ++x, ++p)
     {
         cout << *p << "  ";
     }
    return 0;
}

我想我知道我的问题出在哪里。在我的第一个循环之后,我的指针位于 values[10],但我需要将其返回到 values[0] 以显示它们。我该怎么做?

最佳答案

你可以像你第一次赋值 p 那样做:

p = &values[0];

此外,数组非常像指向静态分配内存的指针(您无法更改)。因此,表达式 &values[0] 的计算结果与 values 的计算结果相同。因此,

p = &values[0];

相同
p = values;

关于c++ - 如何将指针重置为特定的数组位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936078/

相关文章:

c++ - 返回类型为 auto 的函数

c++ - 反向传播算法实现

c++ - vector 和迭代器的 vector 上的指针

c++ - 如何声明一个指向 int 数组的指针数组?

c - 链表中的入队函数

c - 函数指针中的最低有效位

c++ - 如何将显式声明的构造函数分离到 .h 和 .cpp 文件中?

c++ - 根据其属性将 vector 分成更小的 vector

c++ - 无法声明和识别全局函数

c++ - 不能用大括号传递两次指针