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
|
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;
} |
|
|