zoukankan      html  css  js  c++  java
  • C waring:function returns address of local variable 为什么两段代码运行结果完全不一样?



    返回 局部变量的地址
    代码1:
    #include <stdio.h>
    #define N 5
    int * sum(int a ,int b)
    {
        int result=a+b;
        return &result;
    }

    int * getarray(int array[])
    {
       int i=0;
       for(i=0;i<N;i++)
        {
           array[i]=array[i]*10;
        }

        return array;
    }
    int main(int argc, char *argv[])
    {
        int i=0;
        int a=3,b=5;
        printf("\n %d+%d=%d \n",a,b,*sum(a,b));

        int array[]={1,2,3,4,5};

        int * arrayptr=getarray(array);

        for(i=0;i<N;i++)
        {
           printf(" \n i=%d array[%d]=%d  ",i,i,*(arrayptr++));
        }
        
        return 0;
    }
    结果:

     3+5=8
     
     i=0 array[0]=10   
     i=1 array[1]=20   
     i=2 array[2]=30   
     i=3 array[3]=40   
     i=4 array[4]=50  

    代码2:
    #include <stdio.h>
    #define N 5
    int * sum(int a ,int b)
    {
        int result=a+b;
        return &result;
    }

    int * getarray(int array[])
    {
       int i=0;
       for(i=0;i<N;i++)
        {
           array[i]=array[i]*10;
        }

        return &array;
    }
    int main(int argc, char *argv[])
    {
        int i=0;
        int a=3,b=5;
        printf("\n %d+%d=%d \n",a,b,*sum(a,b));

        int array[]={1,2,3,4,5};

        int * arrayptr=getarray(array);

        for(i=0;i<N;i++)
        {
           printf(" \n i=%d array[%d]=%d  ",i,i,*(arrayptr++));
        }
        
        return 0;
    }

    结果:

     3+5=8
     
     i=0 array[0]=2280752   
     i=1 array[1]=0   
     i=2 array[2]=1   
     i=3 array[3]=1   

     i=4 array[4]=0  

    两端代码中标红部分为不相同的地方,为什么运行结果就完全不一样?

  • 相关阅读:
    关于AJAX与form表单提交数据的格式
    MongoDB
    Redis
    在django中使用django_debug_toolbar进行日志记录
    python第三方库,你要的这里都有
    Django之用户认证auth模块
    Django中常用命令
    form表单钩子,局部钩子和全局钩子
    当我开始爱自己
    FOR YOU
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1783505.html
Copyright © 2011-2022 走看看