C语言堆栈和函数行为

时间:2016-06-21 14:47:49

标签: c stack

我发布了两个代码。在第一个代码中,意外的输出将变为“ASH-2”。必须输出的输出是“ASH35”。 在第二个代码中,输出为“ASH35”。 现在,如果我删除'printf(“ASH”); '第一个代码中的行,值35被打印。

任何人都可以帮助我解决这个意想不到的行为,请提前感谢您调查此事。

//CODE 1

    int* fun()  
    {  
    int k;  
    k=35;  
    return (&k);  
    }

    int main()  
    {  
    int *j;  
    j=fun();  
    printf("ASH");  
    printf("%d",*j);  
    return 0;  
    }


    //CODE 2

     int fun()  
    {  
    int k;  
    k=35;  
    return (k);  
    }

    int main()  
    {  
    int j;  
    j=fun();  
    printf("ASH");  
    printf("%d",j);  
    return 0;  
    }

0 个答案:

没有答案