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  

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

  • 相关阅读:
    【Hadoop】HDFS笔记(一):Hadoop的RPC机制
    英文分句
    破解google翻译API全过程
    最大匹配算法 (Maximum Matching)
    【Html 学习笔记】第八节——表单实践
    【Html 学习笔记】第七节——表单
    【Html 学习笔记】第六节——列表
    Linux下第一次Node尝试
    【Html 学习笔记】第五节——表格
    C++并发低级接口:std::thread和std::promise
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1783505.html
Copyright © 2011-2022 走看看