dynamische 2D felder



  • hab mal dieses beispiel gefunden

    main()
    {
      int     n,m,i,j;
      double  **b;   
    
      cout << "  Eingabe Zeilen  n : ";  cin >> n;
      cout << "  Eingabe Spalten m : ";  cin >> m;
    
      b = new (double* [n]);      
      for (i = 0; i < n; i++)
       {
         b[i] = new double[m];    
       }
    
      for (i = 0; i < n; i++ )    
       {
         for (j = 0; j < m; j++)
          {
            b[i][j] = (i+1)*(j+1);
          }
       } 
    ...
      for (i = n-1; i >= 0; i--)
       {
         delete []  b[i];            
       }
      delete [] b;                  
    }
    

    diese zeile ist mir nicht ganz klar:

    b = new (double* [n]);
    

    ohne den stern würde ich n mal 8 byte alloziieren und b würde als einfach pointer auf die erste adresse des bereichs zeigen.ok!
    b ist aber jetzt ein pointer auf pointer. was passiert in der oben erwähnten zeile?was wird alloziiert?wohin zeigt b?

    steige da nicht so ganz durch



  • bei double werden doubles angelegt, bei double* Zeiger auf doubles.



  • du erzeugst damit ein array von pointern auf double felder die irgendwo anders liegen.

    so wie hier

    double* pd = new double*[10];
    
    for (size_t i = 0; i < 10; ++i)
     pd[i] = new double[100];
    
    pd[0][99] = 10.0f;
    

Anmelden zum Antworten