Dynamische Array



  • Hallo,

    ich habe ferstgestellt das ich im VSC++ 6.0 keine Dynamischen Arrays generieren/benutzen kann z.B.

    #include <iostream.h>
    
    int main()
    {
    
    int i;
    
    cin >> i;
    
    int iaArray[i];
    
    for(int i2 = 0; i2 <= i; i2++)
    {
    	cout <<iaArray[i2] <<endl;
    }
    
    return 0;
    }
    

    Mit dem GNU Compiler unter Unix/Posix kombatiebelen Betriebssystem klappt es allerdings wunderbar. Ich hab jetzt mal die options und preferences durch geschaut aber nix finden koennen wo ich es haette fuer den Compiler ligitimieren koennen. Nach dem was ich bis jetzt gehoert habe sind dynamische arrays aufjeden Fall ANSI konform (ich weis MS compiler haelt sich da nicht immer so toll dran). Weis jemand eine moeglichkeit um das Problem zu umgehen?



  • DAS ist bestimmt nicht ANSI-Konform
    dynamisch geht nur mit "new"



  • Am besten nutzt du gleich eine Array-Klasse (z.B. std::vector oder std::deque) dafür. Ansonsten mußt du dynamische Arrays auf dem Heap ablegen:

    int *myArray = new int[i];
    // arbeite mit myArray
    delete[] myArray;// !! ganz wichtig
    


  • du kannst bei der initialisierung eines arrays, so wie du das gemacht hast, nur mit konstanten arbeiten, also:

    #include <iostream.h>
    
    int main()
    {
    
    const int i = 10;
    
    //cin >> i;
    
    int iaArray[i];
    
    for(int i2 = 0; i2 <= i; i2++)
    {
        cout <<iaArray[i2] <<endl;
    }
    
    return 0;
    }
    

    wenn du ein dynamisches Array haben möchtest dann solltest du entweder z.b. die STL benutzen (z.b. list<template>, vector<template> etc.) oder mache folgendes:

    #include <iostream.h>
    
    int main()
    {
    
    int i;
    
    cin >> i;
    
    int *iaArray = new int[i];
    
    for(int i2 = 0; i2 <= i; i2++)
    {
        cout <<iaArray[i2] <<endl;
    }
    delete[] iaArray;
    return 0;
    }
    


  • In der MFC gibt es dann noch CArray mit "Verwandschaft". 🙂



  • Super, das hat mir schon geholfen 🙂



  • @Robert S.
    Das was du machst, ist nur in ISO C erlaubt, aber nicht in ISO C++.



  • groovemaster schrieb:

    @Robert S.
    Das was du machst, ist nur in ISO C erlaubt, aber nicht in ISO C++.

    Ich wußte gar nicht, daß man in C überhaupt Variablen als Arraygrenze verwenden darf (wenn dort noch nicht einmal ein const anerkannt wird).


Anmelden zum Antworten