- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Variablen in einer Funktion bekannt machen

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    38
    Beiträge
    388
    Anzeige

    LiFePo4 Akku selber bauen - Video
    danke für die Antwort, das fehlende e ist ein schreibfehler (Ich habs abgetippt)

    Das ist also nicht der Grund für die Fehlermeldung.

    Diese Struktur ist nur ein Test um die Funktion zu verstehen.

    Jetzt merke ich gerade selbst den Fehler, in einer Struktur kann ich keine Werte zuweisen...
    Damit mache ich ja nur das Grundgerüst.

    Erst wen ich schreibe z.B. daten daten1;
    Habe ich eine Struktur daten1 der ich auch Werte zuweisen kann, ist das richtig?

  2. #12
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Jetzt wo du es erwähnst. Ich würde anstelle deines var[3] auch lieber ein *arr also einen Pointer auf ein array nehmen, da du sonst ja die Flexibilität verlierst. Du wolltest ja verschieden große array verwenden, oder hab ich das falsch verstanden?

    Mit z.B.
    char var[3];
    data1.arr = var;
    hast du ja dann später das Array in arr verfügbar.

    sast

    Mit einem typedef definierst du einen Datentyp. Das Datum selbst ist dann nur als dieser Datentyp deklariert.

    雅思特史特芬
    开发及研究

  3. #13
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    38
    Beiträge
    388
    Also dann schreibe ich folgendes

    Code:
    typedef struct daten{ 
    double var[3]; 
    double h; 
    float w1; 
    float w2; 
    }daten;
    Wie weise ich den am einfachsten allen Variablen die Werte zu?

    Und kannst du mir bitte ein Beispiel schreiben, was ich in das *.c und das *.h file schreiben muss wen ich z.B. 3 Strukturen vom Typ daten brauche?

  4. #14
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Hmm,

    das hab ich doch alles schon geschrieben. Und meinen Hinweis mit dem Pointer auf das Array hast du auch gleich wieder geschickt ignoriert.

    Lies mal meinen ersten und den letzten Post nochmal durch. Dann versuchst du da was draus zu machen und wenn dann noch Fragen offen sind ... bin ich bestimmt heute abend nochmal online.

    Ach so du musst doch nur eine struct definieren und dann davon mehrere Variablen anlegen und dem pointer das entsprechende Array übergeben.

    sast

    雅思特史特芬
    开发及研究

  5. #15
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    38
    Beiträge
    388
    Entschuldige, ich glaube ich hab mich etwas falsch ausgedrückt

    Wen ich daten1 erstelle, gibt es eine Möglichkeit gleich alle Werte beim erstellen zuzuweisen?

    Also im sin von
    Code:
    daten daten1 ={1,2,3,4,5,6) oder muss ich wirklich
    daten1.var[1] = 1;
    .....
    ....
    daten1.h = 4;
    .....
    schreiben?
    
    (Oder mit dem Pointer
    daten1.var =arr;)
    
    Ich hoffe meine Beschreibung ist verständlich

  6. #16
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    wie wäre es denn mit einer daten.h

    typedef struct _daten{
    int id;
    char *arr;
    int length;
    ...
    }daten;

    extern int Berechnung1(int arr1, int pos1, int arr2, int pos2, int op1, int op2, char opid);
    extern char get_arr_value(int arr_nummer, int arr_pos);
    extern char* get_arr(int arr_nummer);
    extern void set_arr_value(int arr_nummer, int arr_pos, char value);
    ...

    und in der daten.c mit

    daten data1, data2, data3;
    char feld1[] = {1,2,3,4,5};
    char feld2[] = {6,7,8,9,10};
    char feld3[10];

    data1.id = 1;
    data2.id = 2;
    data3.id = 5;
    data1.arr = feld1;
    data2.arr = feld2;
    data3.arr = feld3;
    data1.count = 5;
    data2.count = 5;
    data3.count = 10;

    char get_arr_value(int arr_nummer, int arr_pos)
    {
    ...
    char result = SR_ERROR;
    switch(arr_nummer){
    case 1:
    ... //feldbereich überprüfen auf gültigkeit
    result = *(data1.arr+arr_pos); //feld1[arr_pos];
    break;
    case 2:
    ...
    }
    return result;
    }

    char* get_arr(int arr_nummer)
    {
    ...
    }

    ...


    und in der main.h

    ...
    int res;

    res = Berechnung1(1,0,2,0,8,1,'A');
    set_arr_value(5,4,get_arr_value(1,2));
    set_arr_value(5,0,(char)(res));
    //usw
    ...

    Ich weiß nicht wie ich mich sonst noch verständlicher ausdrücken soll, ohne dir die ganze Arbeit abzunehmen. Ansonsten beißt dich der Compiler auch nicht, wenn du einfach mal eine Idee ausprobierst. Im schlimmsten Fall gibt es eine Fehlermeldung, oder bei der Ausführung eine Exception, wenn du doch mal den Bereich falsch angegeben hast in der daten.c

    sast

    雅思特史特芬
    开发及研究

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen