Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » C Programm » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
Keeen

Super, danke!!

Ich habs halt irgendwie auf jegliche sonstige Art versucht aufzurufen (z.B. p(*t, *m) etc.), aber so nicht.

Vielen Dank großes Grinsen
Karlito

Fehlt doch nur noch der Aufruf...

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	int x[2];
	x[0]=5;
	x[1]=5;
	printf("x[0]: %d, x[1]: %d, \n", x[0], x[1]);
	int *t;
	int *m;
	t=&x[0];
	m=&x[1];
	system("PAUSE");

	void p(int *t, int *m)
	{
		*t=7;
		*m=8;
		printf("%d, %d\n", x[0], x[1]);
		system("PAUSE"); 
	}

	p(t,m); //Aufruf

		printf("%d, %d\n", x[0], x[1]);

		system("PAUSE");
		return 0;
} 


Wobei ich an deiner Stelle keine eingebettete Funktion verwenden würde:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
#include <stdio.h>
#include <stdlib.h>

void p(int *t, int *m)
{
	*t=7;
	*m=8;
	printf("%d, %d\n", x[0], x[1]);
	system("PAUSE"); 
}

int main(int argc, char *argv[])
{
	int x[2];
	x[0]=5;
	x[1]=5;
	printf("x[0]: %d, x[1]: %d, \n", x[0], x[1]);
	int *t;
	int *m;
	t=&x[0];
	m=&x[1];
	system("PAUSE");


	p(t,m); //Aufruf

	printf("%d, %d\n", x[0], x[1]);

	system("PAUSE");
	return 0;
} 


VG,

Karlito
Keeen

hm ok.

Aber wie könnte ich denn nun obiges Problem lösen? Ich will eine Funktion, welche 2 oder mehr Variablen einer anderen Funktion ändert.
Karlito

Hallo,

du muss die Funktion schon noch aufrufen... Sie wird nicht automatisch ausgeführt.

Siehe:http://en.wikipedia.org/wiki/Nested_function

Sonst ist die Funktion nur deklariert, wird aber nicht verwendet.

Du musst noch mit den Sichtbarkeiten der Variablen aufpassen. Wenn du t und m inner- und außerhalb deiner eingebetteten Funktion verwendest, werden in der Funktion (und zwar nur in der eingebetteten Funktion) t und m mit den übergebenen Parametern überschrieben.

VG,

Karlito
Keeen C Programm

Guten Abend, ich würde gerne wissen, weshalb die Funktion im inneren des folgenden Programms einfach übersprungen wird und wie ich dieses Problem beheben könnte...

Ich versuche mit diesem Programm einfach eine Funktion zu erstellen, welche den Wert zweier Variablen verändert, dies allerdings nicht nur im inneren von sich selbst tut, sondern auch in der außerhalb liegenden main Funktion. Es geht also im Prinzip um "call by reference". Also obige Idee versuche ich mit Pointern zu bewerkstelligen...

Hier das Programm:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int x[2];
x[0]=5;
x[1]=5;
printf("x[0]: %d, x[1]: %d, \n", x[0], x[1]);
int *t;
int *m;
t=&x[0];
m=&x[1];
system("PAUSE");

void p(int *t, int *m)
{*t=7;
*m=8;
printf("%d, %d\n", x[0], x[1]);
system("PAUSE"); }

printf("%d, %d\n", x[0], x[1]);

system("PAUSE");
return 0;
}