Zeiger problemilo
-
Hi
Warum bekomme ich einen Speicehrüberlauf Windows Fehler, bei diesen Funktion.
Wie kann ich den COde korrekt schreiben?
Ist da etwas verkehrt ?
Danek
#include <iostream.h> double A3[6] = { 1.427, 1.287, 1.182, 1.099, 1.032, 0.975 }; double A4[5] = { 0.691, 0.548, 0.508, 0.433, 0.412 }; int ini=0; int *index = &ini; void indexini(int,int); void swap(int&,int&); void sort(const double*, int); void get(double*, int); void indexini(int indexx[],int ren) { for(int sx=0; sx<ren; sx++) indexx[sx] = sx; } void swap(int& x,int& y) { int h=x; x=y; y=h; } void sort(const double c11[], int sort_len) { indexini(index,sort_len); for(int hg=0; hg<6; hg++) cout<<"["<<hg<<"] "<<index[hg]<<endl; /* for(int sy=0; sy<sort_len; sy++){ for(int sz=1; sz<sort_len-sz; sz++) if(c11[index[sz]] > c11[index[sz++]]) swap(index[sz],index[sz++]); } */ } int main() { sort(A4,6); }
-
es gibt kein A4[5]
A4 hat die größe '5' (so hast du das array ja auch deklariert) - von A4[0] bis A4[4]anscheinend /nur den code kurz angesehen\ sagst du aber, es habe die größe 6
-
Du solltest beim Aufruf von sort für die Anzahl der Elemente 5 übergeben. Zumindest in Kombination mit A4. Außerdem ist es etwas gefährlich die Schleife in sort bis 6 laufen zu lassen.
-
in dem geposteten Code wird auf A4[5] überhaupt nicht zugegriffen, also kann das wohl kaum der Fehler sein. Ich würd mal sagen, das index-Feld ist mit 1 Element leicht zu klein.