Skocz do zawartości

[C] Wskaźnik do tablicy struktur jako argument funkcji


Pomocna odpowiedź

Napisano

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

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

  • Lubię! 1

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.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...