On Friday 22 December 2000 23:46, Matthias Petermann wrote:
Hallo LUG,
ich habe ein kleines Problem in einem C Programm, an dem ich schon fast verzweifle. Auf die Gefahr hin, hier damit offtopic zu sein möchte ich es trotzdem einmal kurz schildern:
<Beispiel> #include <stdlib.h> #include <stdio.h>
int fill(int *feld); // Prototyp
int fill(int feld[][6]);
void main() { int feld[20][6]; fill(feld); exit(0); }
int fill(int *feld)
int fill(int feld[][6])
{ int a,b;
for(b=0;b<20;b++) { for(a=0;a<6;a++) feld[b][a]=10; } return(1); }
</Beispiel>
Ganz kurze Erklärung: Ich möchte ein zweidimensionales Feld von Integern in der Main-Funktion statisch definieren.
<tutnixzurSache> es ist nicht statisch! Dann müßte static davor stehen oder das Feld müßte global definiert sein.
Main mag zwar die Funktion sein, die das ganze Programm über aufgerufen ist, aber nichts desto trotz nur eine Funktion. => Es ist also auch durchaus erlaubt main von einer anderen Stelle des Programmes aus aufzurufen (nichts anderes macht die Initialisierungsroutine aus libgcc.a). </tutnixzursache>
Auf dieses Feld möchte ich aber auch mit anderen, aus main() aufgerufenen Funktionen zugreifen können und dachte, dass mit dem Übergeben der Adresse des Feldes tun zu können. Doch irgendwie scheint das bei Feldern mit Dimensionen >1 nicht zu klappen? In meinem C/C++ Lernbuch habe ich dazu nichts gefunden und wäre sehr dank- bar, wenn mir jemand einen kleinen Tipp geben könnte.
Wenn Du Felder mit variablen Dimensionen nutzen willst solltest Du Dir eine Klasse definieren (evtl. gibt's das schon in der STL).
Konrad