Ich versuche, den Wert der lokalen Variablen durch eine andere aufgerufene Funktion zu ändern, aber ich bin nicht in der Lage herauszufinden, was alle Werte auf den Stapel geschoben werden.Welche Werte werden während eines Funktionsaufrufs auf den Stapel geschoben?
#include <stdio.h>
#include <string.h>
void fun()
{
int i;
int *p=&i;
int j;
for(j=0;*(p+j)!=10;j++);
printf("%d",j);
/* Stack Frame size is j int pointers. */
*(p+j)=20;
}
main()
{
int i=10;
fun();
printf("\n %d \n",i);
}
Wie genau funktioniert j
in fun()
gleich 12
? Ich versuche zu verstehen, welche Werte auf den Stapel geschoben werden. Genauer gesagt, können wir den Wert von i
ändern, der in main()
ohne Verwendung einer for
Schleife in fun()
ist und ist es möglich, den Wert j
innerhalb fun()
vorauszusagen?
Dies sollte Ihr Problem beheben. http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope –
Es könnte einfacher sein. 'void Spaß (int * ip) { * ip = 20; } int main() { int i = 10; fun (&i); } ' –
@RSahu. Der Zweck der Frage zu verstehen ist, welche Werte auf den Stapel geschoben werden – debonair