ArraySize Problem



  • folgender quellcode:

    void eintragSuchen()
           {
                int eingabe;
    
                int index;
    
                int telefonNummer [3] = {023411111, 7654321, 1234567};   
                string name[3] = {"Max ", "Fred ", "Anna "};        
                string nachName [3] = {"Meier ", "Astair ", "Kournikova "};
    
                cout << "Bitte nummer angeben: " << endl;
                cout << sizeof(telefonNummer);
                cin >> eingabe;
    
                for (int i = 0; i < sizeof(telefonNummer); i++)
                {
                     if(telefonNummer[i] == eingabe)
                     {                  
                     //cout << "treffer: " << i << endl;
    
                      break;                                                             
                     }                
                 }       
            }
    

    Der Array zeigt mir eine Größe von 12 an und das kapier ich mal gar nicht.
    Die Kapazität müsste doch 3 sein, so isset zumindest bei java.

    ICh will an den Index des ggefundenen Eintrags ran.

    Nämlich zb 2 für den 2. Eintrag!

    thx



  • 3 * sizeof(int) = 12;
    Kurt



  • kapier ich nicht!?

    wo sag ich denn 3 * size of array???



  • wenn ich das richtig verstanden hab was Kurt sagt, dann ist dein int 4Byte du hast in deinem Array quasi 3 ints zu je 4 Byte macht 12Byte!



  • und wie komme ich an die größe des array einfach nur also an die ausgabe ==> 3 ?

    der zählt also den reservierten speicher des arrays bei meiner variante???



  • jo denke schon wenn du mit ints arbeitest in dem fall immer durch 4 weil die ja immer 4 Byte lang sind



  • mach ich das so gibt er mir als index 7 aus!

    wie greift man denn in c++ auf den index eines slots richtig und sauber zu???

    for (int i = 0; i < sizeof(telefonNummer); i++)
                {
                     if(telefonNummer[i] == eingabe)
                     {                  
                     //cout << "index: " << sizeof(telefonNummer)/sizeof(telefonNummer[0]);                
                     index = i;
                     cout << index;
                     break;                                                             
                     }                
                 }
    


  • sizeof(telefonNummer)/sizeof(telefonNummer[0])
    

    Wie wäre es wenn du das mal in deine for-Schleife packst? In C++ greift man richtig und sauber auf Arrays zu indem man nur da rumwurschtelt wo auch was drinsteht und nicht nochmal x Positionen weiter, weil die for-Schleife falsch ist 🙄


Anmelden zum Antworten