Sichtbarkeit/Zeiger problem
-
Hallo,
ich habe folgenden c++ Code:
void fill(int*); void fill(int*arr) { for(int i=0;i<((sizeof (arr))/(sizeof (arr[0])));i++) arr[i]=i; } int main() { int ii[10]; fill(ii); for(int i=0;i<10;i++) cout<<ii[i]<<" "; }
Als Ausgabe kriege ich
0 134519572 -1073743144 134513961 -1208160500 -1073743132 -1073743112 134514731 65535 -1209086880
statt
0 1 2 3 4 5 6 7 8 9
wenn Ihr tipps habt, her damit. ich werd noch wahnsinnig...
-
void fill(int *i, int anzahl) { int iCount; for(iCount=0;iCount<anzahl;iCount++,i++) { i*=iCount; } }
so würd ich es machen
-
sizeof(arr) liefert dir sizeof(int*), da dass int[10]-array in einen int* konvertiert wurde.
also entwedertemplate <int N> void fill(int (&arr) [N]) { for(int i=0;i<N;i++) arr[i]=i; }
oder die größe des arrays extra übergeben;
oder erst gar kein solches array verwenden, sondern lieber std::vector oder boost::array.
-
Danke an alle, dachte mir man könnte mit dem Trick überall Array-Größe rausfinden..