funkcja typu strukturalnego, zwracanie wartosci const

funkcja typu strukturalnego, zwracanie wartosci const
Mateusz Janiak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Mam taki oto kod:

Kopiuj
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);

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2396
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;

daniel1302
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.