Как получить значение определенного элемента массива, а не его адрес?

Задача заключалась в том, чтобы найти максимальный элемент массива и вывести 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 шт):

Автор решения: ev2dz

Что если сделать счетчик, которой определит номер элемента max и потом сделать for с этого элемента до конца?

→ Ссылка
Автор решения: KoVadim

Вы прям и выводите адрес

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;
    }
}
→ Ссылка
Автор решения: Harry

В общем случае: если у вас известен адрес, то значение по этому адресу можно получить с помощью оператора разыменования *.

В этом смысле вы могли бы написать

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);
}
→ Ссылка