Dynamische Felder in einer Funktion erzeugen und übergeben

  • Themenstarter Themenstarter cidburner
  • Beginndatum Beginndatum
C

cidburner

Hallo

Ich bin neu in C++ eingestiegen und nun hänge ich an einer Studienaufgabe und komme nicht so recht weiter. Das Thema sind Zeiger und, Zeiger auf Zeiger. Und die sind ja gerade für Neulinge wie mich , eine "wunderschöne" Sache :)

Also folgendes Wir sollen ein Programm schreiben in den in einer Funktion ein dynamsiches Feld erzeugt wird und das mittel Zeiger auf Zeiger auf andere Funktione übergeben wird. So sieht das ganze bei mir jetzt aus.
Code:
#include<iostream>
using namespace std;

// Feld erzeugen mit Zeiger auf Zeiger //

void feld_erzeugen (int **xy, int n)
{
 xy = new int* [n];
 srand (time(NULL));
 for (int i=0;i<n;i++)
**(xy+i)=rand()%100;
 
 
  for (int i=0;i<n;i++)
         {if (!(i%10))
             cout<<endl;
          cout.width(4);
        cout<< *(xy+i);
 }

}
// Feld ausgeben mit Zeiger auf Zeiger //

void feld_ausgeben(int **xy, int n)
{
     for (int i=0;i<n;i++)
         {if (!(i%10))
             cout<<endl;
          cout.width(4);
          cout<< *(xy+i);
          
         }    
}

int main () 
{
  int *zeiger=0;    
  int  m=0;
  
  cout<<"Bitte groesse des Feldes eingeben"<<endl;
  cin>>m;
  feld_erzeugen (&zeiger,m);
  feld_ausgeben (&zeiger,m);
  
}


So richtig hinhauen wills nicht. Wie gesagt die Zeiger Probelematik ist mir neu , und ich nehme mal an der Syntax ist falsch.
Zu erst zu klären für mich:
1. Ist das Prinzip erstmal richtig wie ich an die Sache ran gehe mit Zeiger auf Zeiger ? Oder ist da was anderes gemeint .
2. Falls ja, wo liegen die Fehler ?

Vielen dank schonmal im voraus für die Hilfe
 
Deine Beschreibung ist etwas ungenau, aber ich glaube, du sollst folgendes machen:
In der aufgerufenen Funktion sollst du ein Feld, ein Array also, für n Element von einem bestimmten Typ, in diesem Beispiel nehmen wir int, dynamisch erstellen. Das bedeutet, du musst Speicher für n int-Werte alloziieren. So etwas kann man beispielsweise mit malloc machen, das einen Zeiger zurückliefert. Diesen Zeiger sollst du dann in eine per Parameter übergebene Variable schreiben, dein xy. Damit die Zeigervariable von der Funktion verändert werden kann, muss deren Zeiger übergeben werden, xy ist also ein Zeiger auf eine Zeigervariable. Um den Zeiger auf dein Array in diese Variable zu schreiben, musst du deren Zeiger dereferenzieren, du musst also schreiben *xy=malloc(n*sizeof(int));
 
Zurück