Hej, jestem nowy w programowaniu (uczenie się przez cs50x w C) i kiedy wspomnieli o strukturach postanowiłem spróbować oszukać i napisać szybki program, który zamieniłby pewne wartości w struktura korzystająca z funkcji. Pracuję do momentu pojawienia się kilku komunikatów o błędach, z których pierwszy jest "niekompatybilnymi wskaźnikami przekazującymi" numery struct * "do parametru typu" struct numbers *. "Kolejna kwestia pojawia się w definicji funkcji, w której kompilator mówi" niekompletne definicja typu „struct numer””ja tylko nadzieję na jakąś pomoc, bo jestem zakłopotany.Nowość w programowaniu, problem ze strukturami i funkcjami
Herezje kod (znam jego szorstki ale uczę lol)
#include <stdio.h>
struct numbers;
void swap(struct numbers* s);
int main(void)
{
struct numbers
{
int a;
int b;
int c;
};
struct numbers x = {1, 5 , 9};
swap(&x);
printf("%i, %i, %i\n", x.a, x.b, x.c);
return 0;
}
void swap(struct numbers* s)
{
int temp = s -> a;
int temp2 = s -> b;
s -> a = s -> c;
s -> b = temp;
s -> c = temp2;
}
"Numery struktur zdefiniowane w obrębie głównego" i "numery struktur poza dowolną funkcją" są uznawane za różne typy. Przenieś definicję poza 'main'. – immibis
Witamy w SO. Chociaż pytanie jest ogólnie w porządku, będzie łatwiej każdemu, jeśli następnym razem po wpisaniu pytania określisz, która linia podnosi każdy błąd. Nie zapomnij zaznaczyć jednej z odpowiedzi, które rozwiązują twój problem (jeśli taki istnieje) jako rozwiązanie. – SJuan76
Jak wcześniej wspomniano, zmień definicję "struct" na globalną. Ponadto, umieść dodatkową przestrzeń między liniami, które zajmują się różnymi rzeczami (takimi jak po '# include', C nie dba o wcięcia.) Możesz chcieć użyć'% d' również w 'printf', jest to bardziej powszechne. – Gophyr