Zweidimensionales Array als Parameter mit Struktur initialisieren



  • Hey zusammen!

    Ich möchte ein in main() erstelltes 2-dimensionales Array an eine Funktion übergeben und mit Strukturzeigern füllen.
    Mein Code sieht bis jetzt so aus:

    struct Cube
    {
    	int val;
    }
    
    void createField(Cube** field, int w, int h)
    {
    	for (int x = 0; x < w; x++)
    	{
    		for (int y = 0; y < h; y++)
    		{
    			field[x][y] = new Cube;
    			field[x][y].val = 0;
    		}
    	}
    }
    
    int main()
    {
    	Cube* f[10][10];
    	createField(f, 10, 10);
    	return 0;
    }
    

  • Mod

    struct Cube
    {
      int val;
    };   // Semikolon!
    
    const unsigned width=10;
    
    void createField(Cube*  field[][width], unsigned h) // Tipp: Benutze keine 2D-arrays. Die sind unnötig kompliziert zu verwenden.
    {
      for (unsigned x = 0; x < h; x++)   // Da Indizes nie negativ sind, können wir auch gleich einen vorzeichenlosen Typ nehmen
        {
          for (unsigned y = 0; y < width; y++)
            {
              field[x][y] = new Cube;
              field[x][y]->val = 0;  // field[x][y] ist ein Zeiger auf Cube und muss daher dereferenziert werden.
            }
        }
    }
    
    int main()
    {
      Cube* f[10][width];  // Wie schon gesagt: Nimm lieber 1-D Arrays oder eine Multi-Array Klasse
      createField(f, 10);
      return 0;
    }
    


  • Ok, danke!
    Jetzt hab ich noch ein Problem und zwar will ich ein Array von unbekannter Größe in einer Struktur speichern.
    Wie mach ich das!


  • Mod

    Du speicherst einen Zeiger auf ein mit new angelegtes Array.



  • AxXxel001, gewöhn dir am besten gleich an, mit new angeforderten Speicher immer wieder mit delete freizugeben (analog new[] und delete[] ). Oder verwende Klassen, welche dir diese Aufgabe abnehmen (z.B. STL-Container).


Anmelden zum Antworten