Announcement

Collapse
No announcement yet.

FIFO System - Allgemeine Frage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • FIFO System - Allgemeine Frage

    Hallo Leute,

    ich habe neulich ein C++ Projekt bekommen, welches ich nicht ganz verstehe.

    Folgender Code:

    Code:
    int inInt = 0;
    char ch_in[10];
    
    void HUL::ReadAnswer()
    {
       inInt = Method1.Read(); //Irgendwelche Integerwerte (manchmal auch null)
    
    if((char(inInt ) != ' '))
            {
                //FIFO
                ch_in[0] = ch_in[1];
                ch_in[1] = ch_in[2];
                ch_in[2] = ch_in[3];
                ch_in[3] = ch_in[4];
                ch_in[4] = ch_in[5];
                ch_in[5] = ch_in[6];
                ch_in[6] = ch_in[7];
                ch_in[7] = ch_in[8];
                ch_in[8] = ch_in[9];
                ch_in[9] = char(inInt );
            } 
    
    }
    So und nun stehen in ch_in[0] bis 9 verschiedene Buchstaben drinnen.
    Wie kann das sein?

    Wenn ich auf
    Code:
    ch_in[9] = char(inInt );
    achte, dann steht da meinetwegen ein 'A' drinnen.
    OK! Aber dann wäre es für mich klar wenn auch in ch_in[0-8] ein 'A' drinnen steht.

    Ich bin euch für jede Antwort wirklich dankbar.

  • #2
    das ist quasi ein schieberegister. Du liest einen neuen Wert ein der kommt an Position neun. Alle anderen 10 Werte werden eine Position weiter geschoben. Der älteste Wert fliegt raus.

    Dass da anfangs noch Werte (also Buchstaben drin stehen) kann daran liegen dass das Array nicht sauber initialisiert wird.

    [highlight=c++]
    char ch_in[10];
    [/highlight]

    Initialisiert nur Speicher für 10 Werte vom Typ char. Die zeigen dann auf irgendeinen Speicher, dieser muss allerdings manuell auf einen Wert gesetzt werden. Ansonsten steht da immer noch das drin was vorher vom irgendeinem Programm auf diese Speicherstelle geschrieben wurde.

    Initialisieren kannst Du so:

    [highlight=c++]
    for(int i=0; i<sizeof(ch_in); i++)
    ch_in[i] = 'a';
    [/highlight]

    Dann würde er überall als default mal 'a' hinschreiben. Das solltest Du aber natürlich nicht bei jedem lesen vom Wert aufrufen Beste Stelle wäre ein Konstruktor.

    Comment

    Working...
    X