Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 2dim-Felder als cbr-Funktionsparameter

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.06.2005, 11:19 Uhr
netdisaster



Hallo zusammen,

ich versuche mich neuerdings im C-Programmieren.
Dabei bin ich auf ein Problem gestoßen, das mir meine Lehrbücher nicht ausreichend erklären.

Die cbr-Übergabe von mehrdimensionalen Feldern als Parameter an Funktionen.

Als Testbeispiel hab ich folgenden code in C:


Code:

#include <stdio.h>

void fmat(int *a[3][3]);        // was ist zu tun

int main()
{
   int feld[3][3];
   int i, j;
   for (i=0; i<2; i++) {
      for (j=0; j<2; j++) {
         feld[i][j]=0;
      }
   }
  
   fmat(&feld[0][0]);
  
   for (i=0; i<2; i++) {
      for (j=0; j<2; j++) {
         printf("a[%d][%d] = %3d\n", i, j, feld[i][j]);
      }
   }
}

void fmat(int *a[3][3])
{
   *a[1][1]=100;
}



Das ist nichts weltbewegendes, ich weiß.
Andererseits, es funktioniert nicht und ich weiß nicht, warum.

Vielleicht hättet ihr einen Rat?

Der Compiler (verwende Bloodshed - DevC++) bringt folgende Meldung:
In function 'main':
[Warning] passing arg 1 of 'fmat' from incompatible pointer type

Grüße,
net

Dieser Post wurde am 16.06.2005 um 11:24 Uhr von netdisaster editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.06.2005, 11:53 Uhr
Tommix



Hallo,
einfach

C++:
void fmat(int a[3][3]);

// Aufruf:
fmat(feld)


Felder werden immer als Referenz übergeben.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.06.2005, 12:12 Uhr
netdisaster



Meine Güte,

vielen Dank.
So einfach ...

Der Satz "Felder werden immer als Referenz übergen" war mir durchaus bekannt.
Ich hatte auch schon (bestimmt seit zwei Tagen) alle möglichen Variationen mit und ohne '*' und '&' ausprobiert, etliche Klammern gesetzt und wieder weggemacht. Dabei aber immer bei der Übergabe "fmat(feld[0][0])" anstatt "fmat(feld)" gelassen, was eine andere Fehlermeldung provozierte ...

Du hast einen verzweifelten Anfänger davor bewahrt, endgültig Monitor mitsamt Tastatur aus dem Fenster zu werden.

In Zukunft werde ich meine Probleme wohl früher posten

Nochmals Danke,
net
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: