我是吴京 2022-01-05 23:48 采纳率: 67.4%
浏览 83
已结题

C语言关于结构体指针在打印后指针变成空指针的情况的测试

在昨天

#include <stdio.h>

//函数返回值赋值指针

struct T
{
    int data;
};

T* test()
{
    T t = { 1 };

    return &t;
}

int main()
{
    T* t = test();
    printf("test");

    return 0;
}

在printf打印前,调试发现p所指正常,如图:

img

printf打印后,发现,如图

img

出现错误,p乱指

  • 写回答

3条回答 默认 最新

  • _GX_ 2022-01-06 01:06
    关注

    不要返回局部变量的地址,因为局部变量是在栈上分配的,函数返回时,局部变量所占的内存被释放,所以其地址也就无效了
    如果你要从一个函数返回地址的话,你可以动态分配内存返回其在堆上的地址(要记得自己释放内存),全局变量或静态变量的地址

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月5日