Как получить значение определенного элемента массива, а не его адрес?
Задача заключалась в том, чтобы найти максимальный элемент массива и вывести 5 чисел, что следуют после него в счете.
#include <stdio.h>
int main()
{
int arr[5];
int size = 5;
for (int i = 0; i < 5; i++)
{
scanf_s("%d", &arr[i]);
}
int max = arr[0];
for (int i = 1; i < size; i++)
if (arr[i] > max)
max = arr[i];
printf("Max=%d\n", &max);
int k=1;
do
{
int j= max + 1;
k = k + 1;
printf("Next: %d\n", &j);
} while (k != 6);
}
я понимаю, что выводятся адреса, но как получить значения? помогите, запутався :С
Ответы (4 шт):
Что если сделать счетчик, которой определит номер элемента max и потом сделать for с этого элемента до конца?
Вы прям и выводите адрес
printf("Max=%d\n", &max);
амперсанд в данном случае как раз и означает - возврати адрес. Поэтому, пишем так
printf("Max=%d\n", max);
Что происходит в цикле в конце - не совсем понятно, но если хотелось просто вывести массив, то это так
for (int i = 0; i < size; i++) printf("%d\n", arr[i]);
Чтобы вывести не адрес, а значение нужно писать не printf("Max=%d\n", &max);, а printf("Max=%d\n", max);. То есть без &.
Так же вот пример, как можно вывести дальше 5 чисел после максимального:
int k = max + 1;
while(k <= max + 5){
printf("Next: %d\n", k);
k = k + 1;
}
Полный код:
#include <stdio.h>
int main()
{
int arr[5];
int size = 5;
for (int i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
int max = arr[0];
for (int i = 1; i < size; i++)
if (arr[i] > max) {
max = arr[i];
}
printf("Max=%d\n", max);
int k = max + 1;
while(k <= max + 5){
printf("Next: %d\n", k);
k = k + 1;
}
}
В общем случае: если у вас известен адрес, то значение по этому адресу можно получить с помощью оператора разыменования *.
В этом смысле вы могли бы написать
printf("Max=%d\n", *&max);
и получить то, что вам требуется. Опять же, операторы * и &, так сказать, взаимно друг друга компенсируют, так что *& можно удалить, и получить
printf("Max=%d\n", max);
P.S. Ну, раз тут все пишут еще и свои решения исходной задачи, то...
int main()
{
srand(time(0));
#define SIZE 20
int arr[SIZE];
for (int i = 0; i < SIZE; i++)
arr[i] = rand()%100;
int max = arr[0];
for (int i = 1; i < SIZE; i++)
if (arr[i] > max)
max = arr[i];
printf("Max = %d\n", max);
for(int k = 1; k <= 5; ++k)
printf("Next %d\n", max+k);
}