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  

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

  • 相关阅读:
    Linux进程和线程
    Vim编辑器
    Java多线程编程(七)线程状态、线程组与异常处理
    Java多线程编程(六)单例模式与多线程
    Integer to Roman
    Container With Most Water
    Regular Expression Matching
    Palindrome Number
    c/c++获取硬盘序列号
    String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1783505.html
Copyright © 2011-2022 走看看