myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C - Struktur-Array an Funktion übergeben

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 16.06.13, 19:56   #1
mona_lisa
Eskapistin
 
Benutzerbild von mona_lisa
 
Registriert seit: Apr 2009
Beiträge: 2.756
Bedankt: 3.562
mona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punkte
Standard C - Struktur-Array an Funktion übergeben

Hallo,

ich habe ein kleines Problem, das ich nicht behoben bekomme, vielleicht ist jemand so freundlich und hilft mir auf die Sprünge.

Kurz zusammengefasst: ich habe in der main-Funktion ein Struktur-Arrray definiert, rufe dann eine andere Funktion auf, der ich eben jenes als Parameter übergebe. Dort wird es dann mit Werten gefüllt und eine weitere Funktion kümmert sich darum, dass diese ausgegeben werden.
Also im Prinzip:

PHP-Code:
#define ANZAHL 5    /*Anzahl der Strukturen*/
void funktion1(struct structarray s[ANZAHL], int z1int z2);
void funktion2(int mint n);

void funktion1(struct structarray s[ANZAHL], int z1int z2) {
    
int i;
    for(
i=0i<ANZAHLi++) {
        
s[i].z1+i;
        
s[i].z2+i;
        
funktion2(s[i].xs[i].y);    
    }
}

void funktion2(int mint n) {
    
printf("%d\t%d\n"mn);


int main(void) {
    
struct structarray {
        
int x;
        
int y;
        }
strukturen[ANZAHL];
    
int zahl1 100;
    
int zahl2 200;
    
funktion1(strukturenzahl1zahl2);
    return 
EXIT_SUCCESS;

Das ist jetzt nicht mein eigentlicher Quelltext sondern irgendwas Sinnloses, was ich mir kurz ausgedacht habe, was aber vom Muster her genau das wiedergibt, was mir Probleme bereitet. Im Netz finde ich nur Beispiele, wo ein struct global definiert ist (was ja eigentlich eine Todsünde ist, wie ich gelernt habe^^) und da scheint das so ähnlich zu funktionieren aber hier bekomme ich Fehler a la 'array type has incomplete element type' und 'type of formal parameter 1 is incomplete' und ich bin wohl zu doof, die zu interpretieren
Laut meinem Tutor sollte ich ein struct-array genauso übergeben können wie jedes andere array (via call-by-value)... naja, ich stehe halt auf dem Schlauch.
Danke für eure Tips!
mona_lisa ist offline   Mit Zitat antworten
Ungelesen 16.06.13, 22:10   #2
mrburns
Newbie
 
Registriert seit: Dec 2009
Beiträge: 50
Bedankt: 28
mrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punkte
Standard

Du definierst deinen Verbund 'structarray' in der main-Funktion, willst aber Elemente davon an Funktionen übergeben, die vorher definiert wurden, also ist der Datentyp dort noch vollkommen unbekannt.
Also ganz einfach den Verbund global, über den Funktionen definieren.
mrburns ist offline   Mit Zitat antworten
Ungelesen 17.06.13, 08:34   #3
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 309
Bedankt: 301
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Hi!

Ich mache so etwas immer mit einem typedef und das gehört in ein h-File.
Oder für ein kleines Beispiel einfach dort hin, wo du dein Anzahl-Define machen würdest.

PHP-Code:
#define DATA_COUNT 12

typedef struct {
    
int  x;
    
int  y;
Data_Struct, *Data_StructPt;


int doSomething(Data_StructPt data)
{
    
data[3].47;
    
data[3].11;

    return 
1;
}


int main()
{
    
Data_Struct data[DATA_COUNT] = {0};

    
doSomething(data);

    return 
1;

germgerm ist offline   Mit Zitat antworten
Ungelesen 17.06.13, 16:22   #4
mona_lisa
Eskapistin
 
Benutzerbild von mona_lisa
 
Registriert seit: Apr 2009
Beiträge: 2.756
Bedankt: 3.562
mona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punktemona_lisa leckt gerne myGully Deckel in der Kanalisation! | 16340117 Respekt Punkte
Standard


0 errors, 0 warnings Vielen Dank liebe Leute.
Stimmt, ein struct alleine kann ich ja global definieren, und das interessiert kein Schwein weil es im Grunde nichts bewirkt; und die struct-VARIABLEN dann lokal und an andere Funktinen übergeben etc.

*zing*
mona_lisa ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.


Sitemap

().