Forum: PC-Programmierung variable übergeben


von Frank (Gast)


Lesenswert?

Hi,
ich möchte ein Unterprogramm schreiben, komme aber irgendwie mit der 
Variablenübergabe nicht zurecht.

Ich habe ein Feld von 10x10 Kästchen. Jedes Kästchen kann einen anderen 
Wert enthalten.
davon möchte ich immer ein paar bestimmte abfragen. zunächst möchte ich 
einfach alle Abfragen auf null setzen.
Dazu rufe ich in meinem Programm
1
Feld_erzeugen(x,i,j);
auf.

das soll die Funktion aufrufen
1
void::User Feld_erzeugen(int x, int i, int j){
2
  int Feld[4][2]
3
  if(x==0){
4
    Feld[0][0]=0;
5
    Feld[1][0]=0;
6
    Feld[2][0]=0;
7
    Feld[3][0]=0;
8
    Feld[0][1]=0;
9
    Feld[1][1]=0;
10
    Feld[2][1]=0;
11
    Feld[3][1]=0;
12
  }
13
}
hinterher sollen variablen hinein (Feld[i][0]=(wert) o.ä. (dafür aber i 
und j))

Danach lasse ich mir im HAuptprogramm die Zahlen alle ausgeben
1
Feld_erzeugen(x,i,j);
2
printf("Felder %d %d %d %d %d %d %d %d \n", Feld[0][0],  Feld[1][0]...);
ich möchte da ja eigentlich stehen haben:
Felder 0 0 0 0 0 0 0 0
dort steht aber
Felder 6620480 16 1635076 5503444 31415576 31415560 5391417 5391425

Ich denke mal, dass bei der Übergabe der PArameter irgendetwas faul ist.

lasse ich das unterprogramm Feld_erzeugen weg und mache das direkt im 
Hauptprogramm, bekomme ihc nämlich Felder 0 0 0 0 0 0 0

Kann mir da evtl jemand weiter helfen?

von Helfer (Gast)


Lesenswert?

Hi Frank,
Du definierst in deiner Funktion das Array Feld[4][2].
Nach dem verlassen dieser Funktion wird diese zerstört. Somit kannst du 
danach nicht mittels printf() dieses ausgeben.

Abgesehen davon glaube ich nicht, dass dieser Code nur ansatzweise 
funktioniert, denn es fehlt ein Semikolon und die Doppelpunkte machen 
auch kein Sinn.
Frank schrieb:
> void::User Feld_erzeugen(int x, int i, int j){
>   int Feld[4][2]
>   if(x==0){
>     Feld[0][0]=0;
>     Feld[1][0]=0;
>     Feld[2][0]=0;
>     Feld[3][0]=0;
>     Feld[0][1]=0;
>     Feld[1][1]=0;
>     Feld[2][1]=0;
>     Feld[3][1]=0;
>   }
> }

Wenn du mehr Hilfe benötigen solltest, so poste doch bitte den gesamten 
Code :)

Gruß

von Rolf Magnus (Gast)


Lesenswert?

Frank schrieb:
> void::User

Was soll das denn sein?

Frank schrieb:
> Ich denke mal, dass bei der Übergabe der PArameter irgendetwas faul ist.

Nach dem Code aus deinem Posting zu urteilen, befüllst du ein anderes 
Feld, als du ausliest. Da wir hier aber offenbar einen anderen Code zu 
sehen bekommen als dein Compiler, ist es schwer zu sagen, ob das der 
Grund ist.

Helfer schrieb:
> Wenn du mehr Hilfe benötigen solltest, so poste doch bitte den gesamten
> Code :)

Und vor allem den echten Code und nicht irgendwas, das du für 
sinngemäß hältst.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Ohne den richtigen Code können wir dir nicht helfen.

So wie du den Code gepostet hast ist alles in Butter, in deiner Funktion 
'Feld_erzeugen' setzte du alle Werte des lokal definierten, 
mehrdimensionalen Arrays 'Feld' auf 0. Da es eine lokale Variable ist 
kann auf diese nach Verlassen der Funktion nicht mehr zugegriffen 
werden, somit scheinst du dein 'printf' auf irgendeine andere Variable 
'Feld' anzuwenden, die mit der Variablen 'Feld' in 'Feld_erzeugen' 
absolut nichts zu tun hat.

von Karl H. (kbuchegg)


Lesenswert?

Frank schrieb:

> Ich denke mal, dass bei der Übergabe der PArameter irgendetwas faul ist.

Ich denke mal, das eigentliche Problem ist, dass du kein Buch hast, 
welches dich systematisch durch die Funktionsweise deiner 
Programmiersprache durchführt, sondern dass du das auf eigene Faust 
durch Versuch&Irrtum probierst. Und das geht nun mal recht zuverlässig 
ins Auge.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.