如何将指针重置为特定的阵列位置?

tal*_*na6 9 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;
}
Run Code Online (Sandbox Code Playgroud)

我想我知道我的问题在哪里.在我的第一个循环之后,我的指针处于值[10],但是我需要将它返回到值[0]以显示它们.我怎样才能做到这一点?

zne*_*eak 9

您可以完全按照分配时的方式执行以下操作p:

p = &values[0];
Run Code Online (Sandbox Code Playgroud)

此外,数组非常像指针(你不能改变)到静态分配的内存.因此,表达式的&values[0]评估与刚才的相同values.所以,

p = &values[0];
Run Code Online (Sandbox Code Playgroud)

是相同的

p = values;
Run Code Online (Sandbox Code Playgroud)

  • @ohtanya:没问题.如果它运作良好,您可以单击答案评级下的复选标记以接受答案.:) (2认同)