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.


Anmelden zum Antworten