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

时间:2010-05-29 18:05:57

标签: 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;
}

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

3 个答案:

答案 0 :(得分:8)

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

p = &values[0];

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

p = &values[0];

相同
p = values;

答案 1 :(得分:1)

你的作业是否说你必须按顺序打印数字?如果没有,你可以通过反向打印来获得一些乐趣:

while (p != values)
{
    cout << *(--p) << " ";
}

(只需使用此代码进行学习。)

答案 2 :(得分:0)

如果作业要求您必须按顺序打印数字,则应按以下说明进行修改:

for (x = 0; x < NUM; ++x, p++)
{
    cout << *(p-NUM) << "  ";
}