Как мне сбросить мой указатель на определенное место массива? - PullRequest
7 голосов
/ 29 мая 2010

Я совершенно новый студент по программированию, поэтому, пожалуйста, прости мое невежество.Мое назначение:

Написать программу, которая объявляет массив из 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], чтобы отобразить их.Как я могу это сделать?

Ответы [ 2 ]

8 голосов
/ 29 мая 2010

Вы можете сделать точно так же, как в первый раз, когда назначали p:

p = &values[0];

Кроме того, массивы очень похожи на указатели (которые вы не можете изменить) на статически распределенную память. Следовательно, выражение &values[0] оценивается так же, как и values. Следовательно,

p = &values[0];

совпадает с

p = values;
1 голос
/ 29 мая 2010

В вашем задании говорилось, что вы должны были напечатать числа по порядку? Если нет, вы можете повеселиться, напечатав их в обратном порядке:

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

(просто используйте этот код для обучения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...