funkcja typu strukturalnego, zwracanie wartosci const

0

Mam taki oto kod:

struct file_t* find_min(const struct file_t* files, int size)
{
    if (files == NULL ) return NULL;
    for (int i = 0; i<size; i++)
    {
        if (files+i<files+i+1)
            files = files+i+1;
    }

    return files;
}

i mój problem polega na tym że nie wiem jak zwrócić wartość tej funkcji.
Oto polecenie:
Funkcja ma odnaleźć pierwszy plik w tablicy files o size elementach który posiada najmniejszą ilość zapisanych danych.

Wartość zwracana:

Jeśli znaleziono, to funkcja powinna zwrócić wskaźnik do struktury file_t opisującej taki plik.
W przypadku podania błędnych danych funkcja powinna zwrócić wartość NULL.
Zwróć uwagę na modyfikator const.
nagłówek: struct file_t* find_min(const struct file_t* files, int size);

1
  1. Deklarujesz wskaźnik do miejsca w pamięci, gdzie będziesz przechowywał strukturę.
    struct file_t *wskaznik;

  2. Przydzielasz pamięć dla struktury.

wskaznik = (struct file_t *) malloc(sizeof(struct file_t));

  1. Sprawdzasz czy się udało ( wskaznik != NULL)

  2. Wypelniasz strukturę danymi.
    wskaznik->costam = 3;

  3. Zwracasz wskaźnik do struktury:
    return wskaznik;

1
struct test_t 
{
};

struct test_t* find_min(const struct test_t* files, int size)
{
    if (files == NULL ) return NULL;
    for (int i = 0; i<size; i++)
    {
        if (files+i<files+i+1)
            files = files+i+1;
    }

    return (struct test_t*)files;
}

poza tym, dlaczego przekazujesz const a zwracasz nie const? :) Jesli zwracasz nie const to nie powinienes zwracac consta bo wtedy pozbywasz sie ograniczenia ktore wczesniej sam sobie narzucasz :) Patrzac na deklaracje funkcji mozna odniesc wrazenie, ze zwracasz nie to samo co przekazujesz, tylko jakas inna strukture utworzona na podstawie tej przekazanej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1