Hej,
Muszę w zadaniu napisać funkcje która:

Proszę jedynie o odpowiedź:
W jaki sposób działa argument funkcji tak właśnie wyglądający jak powyżej, mi brakuje tam nazwy zmiennej, zawsze miałem coś w stylu int funkcja(int* x) na przykład, a wcześniej nie miałem styku z int funkcja(int* ) nie rozumiem co tak właściwie podaje funkcji do przemielenia, domyślam się oczywiście że wskaźnik ale wskaźnik czego?
Funkcja z instancją, co to właściwie
- Rejestracja: dni
- Ostatnio: dni
- Postów: 21
- Rejestracja: dni
- Ostatnio: dni
- Postów: 708
Jak dostaniesz ten pointer to możesz poruszać się po tej pamięci. Mało tu wiadomo ale załóżmy że na końcu pamieci masz \0 no to jak to jest char *pos. To będziesz szedł sobie pos++ i sprawdzaił czy *pos == '\0'. I zwracasz jako odpowiedź jako *int bo znalazłeś. castujesz char * do int * co już rodzi problem, bo po pierwsze jak wejdziesz w ten int to moze się okazać, że siedzisz w nie swojej pamięci. Oraz jak niby dopilnujesz strict aliasing ? W ogóle nie jestem pewien czy dobrze rozumiem o co pytasz.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Dostaje wskaźnik na memory_sector_t - pytanie co to jest za struktura? Google nie wydaje się tego znać.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 83
Nazwa zmiennej nie jest obowiązkowa przy deklaracji funkcji. Podajesz wskaźnik na memory_sector_t
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2196
Podaj całą treść zadania bo może są tam istotne detale których nie dostrzegasz a są ważne dla problemu ;)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 21
Tak naprawdę w tym momencie zastanawia mnie jedynie czy argument funkcji: memory_sector_t * = memory_sector_t * x
W skrócie mam rozumieć że to jednoznaczne czy niesie ze Sobą jakieś ograniczenia nie podanie nazwy do struktury w argumencie
Ponieważ mam dla przykładu mam zadeklarowane dwie funkcje które mam rozpisać w tym zadaniu:
void initialize_memory(memory_sector_t *);
address_status_t validate_address(memory_sector_t * memory_sector, const int * address);
I jedna posiada jak widzicie nazwę do struktury w argumencie a druga nie.
Więc zastanawia mnie różnica w podawaniu tych argumentów
Bo idąc tokiem że to jedno i to samo, tak jak jedna z osób napisała powyżej to jak mam się do tego odwołać w kodzie funkcji?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 21
typedef struct memory_sector {
int l_fence;
int buffer[sector_size];
int r_fence;
} memory_sector_t;
Tak wygląda w skrócie struktura
- Rejestracja: dni
- Ostatnio: dni
- Postów: 708
Kolego jedno to jest deklaracja funkcji druga definicja.
Mamy taką sytuację main.c ex.c ex.h - trzy pliki.
Ty masz main.c i ex.h w ex.h masz deklaracje
a ktoś ma ex.h i ex.c w ex.c on ma definicje
main.c includuje ex.h który posiadasz.
Ale nie posiadasz ex.c
Ktoś posiada ex.c i ex.h zrobił cc -c ex.c i otrzymał ex.o
Dał ci ex.o
Ty robisz cc -c main.c
Następnie cc main.o ex.o -o program
A jak on sobie tą zmienną którą przekazujesz nazwie to jego problem.
A autor moze isć jeszcze dalej i dac Ci do ręki
Zapomnijmy o C23 w każdym razie obecnie to oznacza że coś tam będzie brane. I tego się trzymamy, obecna wersja jest przyjemniejsza
I dostaniesz manula i sobie doczytasz co. Może przekazujesz jedną zmienną może dwie etc...
- Rejestracja: dni
- Ostatnio: dni
- Postów: 293
Możesz pominąć nazwę parametru funkcji w deklaracji. W definicji musisz ją podać.
Czyli:
// deklaracja, nazwa parametru nie jest wymagana
void foo(int *);
// definicja, musisz podać nazwę parametru
void foo(int * bar)
{
// ...
}