int *temp()
{
int *digest, a[10] = {1,2,3,4,5,6,7,8,9,0};
digest = a ;
return digest ;
}

main()
{
int *string , i;
string = temp() ;
for (i=0; i<10; i++)
printf("%x ",*(stri

展开全部
收起
2回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 爱不复生

    15人对此回答表示赞同

    main()
    {
    int *string , i;
    string = temp() ;
    for (i=0; i<10; i++)
    printf("%x ",*(string+i)) ;
    }
    这段中的string是安地址调用temp()函数
    可是在输出的出时候它是调用 的(string+1)的地址当然就不是调用的temp()函数,所以输出就不同了啊.没有报错吗?
    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Rosslyn

    8人对此回答表示赞同

    函数内的变量的生存期是这个函数
    函数结束后,你的temp()里的所有局部临时变量都释放了
    所以返回主函数中的地址还是那个地址,但那段地址里面却没有1234567890啦

    想改的话static int a[10] = {1,2,3,4,5,6,7,8,9,0};
    在前面+static表示静态局部变量,可以一直存在程序中;
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部