Я пытаюсь изменить значение локальной переменной через другую вызванную функцию, но я не могу понять, что все значения, вложенные в стек, являются.
#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);
}
Как точно j
в fun()
равно 12
? Я пытаюсь понять, какие значения вставляются в стек. В частности, можем ли мы изменить значение i
, которое находится в main()
, не используя цикл for
в fun()
и можно ли предсказать значение j
внутри fun()
?