Announcement

Collapse
No announcement yet.

Arrayübergabe per Zeiger

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Arrayübergabe per Zeiger

    Hallo,

    ich habe irgendwie ein Problem bei der Verwendung von Zeigern.
    Ich habe drei Methoden implementiert, die unterschiedlich dimensionierte Arrays aufbauen und dann aber die gleichen Berechnungen durchführen. Also habe ich die Berechnungen in eine neue Methode gezogen, der dann die Arrays jeweils nur übergeben werden sollen. Allerdings funktioniert das so nicht und ich weiß leider nicht, wie ich mein Programm abäncern kann.

    Code:
    void methode1() {
      float a[3][3];
      berechne(a, 3);
    }
    
    void methode2() {
      float a[4][4];
      berechne(a, 4);
    }
    
    void methode3() {
      float a[5][5];
      berechne(a, 5);
    }
    
    void berechne(float *param[], int n) {
      // Berechnungen mit den übergebenen Array-Elementen
    }
    Übrigens: Ich brauche das Programm genau in dieser Struktur, also keine Vektoren, globale Arrays etc.

    Ich hoffe mir kann jemand weiterhelfen. Vielen Dank schonmal!

  • #2
    "Funktioniert nicht" ist kein Fehler

    http://de.wikibooks.org/wiki/C++-Pro...emente/_Zeiger
    http://de.wikibooks.org/wiki/C-Programmierung:_Zeiger

    Anhand der Beispiele dort müsstest du das sehen
    Zuletzt editiert von Christian Marquardt; 22.03.2013, 07:38.
    Christian

    Comment


    • #3
      Doch es ist ein Fehler und zwar einer vom Compiler:

      Code:
      Test.cpp: In function 'void methode1()':
      Test.cpp:7:16: error: cannot convert 'float (*)[3]' to 'float**' for argument '1' to 'void berechne(float**, int)'
      Test.cpp: In function 'void methode2()':
      Test.cpp:12:16: error: cannot convert 'float (*)[4]' to 'float**' for argument '1' to 'void berechne(float**, int)'
      Test.cpp: In function 'void methode3()':
      Test.cpp:17:16: error: cannot convert 'float (*)[5]' to 'float**' for argument '1' to 'void berechne(float**, int)'
      Viele Grüße

      Comment


      • #4
        Für alle die eventuell das gleiche Problem haben, so funktioniert's:

        Code:
        template <int n>
        
        void methode1() {
          float a[3][3];
          berechne(a);
        }
        
        void methode2() {
          float a[4][4];
          berechne(a);
        }
        
        void methode3() {
          float a[5][5];
          berechne(a);
        }
        
        void berechne(float (&param)[n][n]) {
          // Code
        }
        Viele Grüße

        Comment

        Working...
        X