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
