dynamischer 2 dimensionaler vektor

BlacKFoXorg

Grünschnabel
hallo zusammen!
ich in der schule die aufgaben zu bekommen ein programm zu schreiben das wir später modular erweitern wollen. unser momentanes thema sind funktionen.

nun zu meinem problem, im main teil soll eine abfrage stattfinden wieviele namen einlesen werden sollen und dann ein dynamischer textvektor erstellt werden. dieser is ja dann 2 dimensinal, weil länge und anzahl der felder. wie kann ich diesen erstellen?
bis jetzt sieht das programm so aus
Code:
#include <iostream.h>
#include <stdio.h>

// hier stehen noch deklarationen, sind aber uninteressant für mein problem

void main() {
int anzahl
cout<<"Wieviele Namen sollen eingelesen werden? ";
cin>>anzahl;
char *namen=new char[100][anzahl];
}

aber dann kommt immer ein fehler das ich keine konstante angeben darf.
wär echt super wenn mir von euch jemand helfen könnt :)
achja und noch eine frage, wie lässt sich der komplette vektor in eine funktion übergeben? indem ich die klammern weglasse also z.b. funktion(namen) ?
 
Mehr als tausend Worte, ein Beispiel:

Code:
#include <unistd.h>
#include <string.h>

int
main( argc, argv )
    int argc;
    char **argv;
{
    char **arr;
    int x;

    #define ANZAHL 12

    arr = (char**)malloc( ANZAHL );

    for( x=0; x<ANZAHL; x++ ) {
        arr[x] = (char*)malloc( ANZAHL );
        strcpy( arr[x], "Hallo, Welt!" );
    }

    for( x=0; x<ANZAHL; x++ )
        printf("String %i: %s\n", x, arr[x] );

    free(arr);
}



teu teu...
 
also ich glaub ich hab soweit verstanden was das programm macht, nur wofür ist malloc gut? hab leider meine msdn nicht mehr =/

und wenn ich kompilieren will bekomme ich nen fehler wegen der unistd.h das er die nicht finden kann.. ich benutze microsoft visual c++ 6.0
 
Also in C++ benutzt man "new" und "delete" um Speicher zu alloziieren.
Unter Ansi C benutzt man malloc, realloc, free um mit Speicher zu arbeiten.

Code:
char *wert = (char*) malloc( 1 )

ist das selbe wie:

Code:
char *wert = new char[1];


Wegen unistd, gibt es wohl unter Windows nicht :)
 
Ist ja auch ganz klar, weil unistd.h die Unix-Standard-Bibliothek ist. In windows müsste dies die stdio.h und die windows.h sein
 
Zurück