Я написал программу на C с оборванным указателем.
#include<stdio.h>
int *func(void)
{
int num;
num = 100;
return #
}
int func1(void)
{
int x,y,z;
scanf("%d %d",&y,&z);
x=y+z;
return x;
}
int main(void)
{
int *a = func();
int b;
b = func1();
printf("%d\n",*a);
return 0;
}
Я получаю выход как 100, хотя указатель болтается.
Я сделал единственное изменение в приведенной выше функции func1()
. Вместо того, чтобы брать значения y
и z
из стандартного ввода, как в приведенной выше программе, теперь я присваиваю значение во время компиляции.
Я переопределил func1()
следующим образом:
int func1(void)
{
int x,y,z;
y=100;
z=100;
x=y+z;
return x;
}
Теперь выход равен 200.
Может кто-нибудь объяснить мне причину двух вышеупомянутых выходов?