davidpi Napisano Styczeń 12, 2013 Udostępnij Napisano Styczeń 12, 2013 Witam. Mam zadeklarowaną strukturę, oraz stworzoną tablicę przechowującą instancje tej struktury. Chciałbym taką tablicę struktur przekazać do funkcji poprzez wskaźnik, jednak ciągle mi to nie wychodzi. Z pojedynczą strukturą sobie radzę, ale z tablicą już nie. Struktura wygląda tak: typedef struct { double Jacob[STOPIEN][STOPIEN]; //Macierz Jacobiego pochodnych cząstkowych z funkcji double Jacob_odwr[STOPIEN][STOPIEN]; //Odwrócona macierz jacobiego double F[STOPIEN]; //Wektor wartości funkcji double H[STOPIEN]; //Wektor przybliżeń szukanych pierwiastków funkcji double X_0[STOPIEN]; //Wektor wartości startowych pierwiastków w stopniach double X[STOPIEN]; //Wektor wartości znajdywanych pierwiastków w radianach double X_Deg[STOPIEN]; //Wektor wartości znajdywanych pierwiastków w stopniach double WspNaPodst[STOPIEN]; //Współżedne montażu poszczegulnego przegubu na podstawie double WspNaPlat[STOPIEN]; //Współżedne montażu poszczegulnego przegubu na platformie względem środka platformy double k1; //Kąt montażu poszczególnego przegubu na podstawie double k2; //Kąt montażu poszczególnego przegubu na platformie double(*Funkcje[STOPIEN])(double Tab[]); //Tablica wskaźników do funkcji double(*Pochodne[STOPIEN][STOPIEN])(double Tab[]); //Tablica wskaźników do pochodnych funkcji }Przegub_Dane; W main() tworzę tablicę struktur w taki sposób, oraz próbuje jakoś utworzyć wskaźnik do tej tablicy. Nie wiem czy dobrze. int main(int argc, char *argv[]) { Przegub_Dane Przegub[6]; Przegub_Dane* pPrzegub = Przegub; Przegub_Init(pPrzegub); return 0; } Na koniec funkcja Przegub_Init do której chcę przekazać wskaźnik do tablicy struktur: void Przegub_Init(Przegub_Dane* S[]) { S[0]->k1=-k1_0; S[1]->k1=-120+k1_0; S[2]->k1=-120-k1_0; S[3]->k1=-240+k1_0; S[4]->k1=-240-k1_0; S[5]->k1=k1_0; } Program się kompiluje ale zawiesza. Czy ja w ogóle dobrze realizuje to przekazanie wskaźnika do tablicy struktur do funkcji?? Ewentualnie w jaki inny sposób przekazać tablicę struktur do funkcji?? Może należy zrobić tablicę wskaźników do struktury?? Tylko jak?? Proszę o pomoc. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
kamil4u Styczeń 12, 2013 Udostępnij Styczeń 12, 2013 Spróbuj: void Przegub_Init(Przegub_Dane* S[]) -> void Przegub_Init(Przegub_Dane* S) i później: S[0].cosTam1 = 0; (*(S+1)).cosTam2 = 0; (S+2)->cosTam3 = 0; Wszystkie sposoby powinny działać. Szukałeś rozwiązania w Google? Na pewno ktoś miał podobny problem( niekoniecznie związany uC ) Pozdrawiam 1 Cytuj Link do komentarza Share on other sites More sharing options...
davidpi Styczeń 12, 2013 Autor tematu Udostępnij Styczeń 12, 2013 Dzięki wielkie kamil4u, teraz wszystko działa. Nawet próbowałem tego trzeciego sposobu, który podałeś, już wcześniej, tylko, że pisałem S+1->k1, czyli bez nawiasu. Oczywiście szukałem w google. Było nawet parę wyników, ale nie potrafiłem ich przełożyć na mój problem. Jeszcze raz dzięki. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!