У меня есть эта небольшая проблема. В настоящее время я пишу немного более крупный проект, чем это, но я хотел показать свою проблему в качестве основного lvl. Итак, у меня есть простой массив из 10 элементов, если целые числа, и указатель на четвертый элемент в этом массиве. Я заполняю массив цифрами 0 ... 9, а затем сортирую их в обратном порядке. Как вы видите, указатель все еще показывает мне значение на четвертом месте (это правильно). Так что мой вопрос. Есть ли вероятность, что указатель как-то «следует» тому значению, которое оно указывало на самое начало кода (значение = 3). Извините за плохой английский, если у нас есть вопросы, я попытаюсь объяснить. Вот код.C++ Необходимо решить эту проблему
#include<iostream>
#include<Windows.h>
using namespace std;
void main()
{
int tab[10];
int *ptr;
for (int i = 0; i < 10; i++) tab[i] = i;
ptr = &tab[3];
for (int i = 0; i < 10; i++) cout << tab[i] << endl;
cout << *ptr << endl;
for (int i = 0; i < 10; i++)
for (int j = 0; j < 9; j++)
if (tab[j] < tab[j + 1) swap(tab[j], tab[j + 1]);
for (int i = 0; i < 10; i++) cout << tab[i] << endl;
cout << *ptr;
system("pause");
}
Каков реальный выход? Каков ожидаемый результат? –
Я ожидаю, что после перетасовки чисел (значений) в массиве указатель все равно будет указывать на значение (NOT ADRESS), которое оно указывало перед перемещением. –
«Нужно решить этот пост» - наименее описательное название, о котором я могу думать. Как вы думаете, другие задают вопросы здесь, потому что им нужно решение медленно? – user463035818