如何从另一个文件访问c代码中嵌套结构的指针成员

时间:2019-01-15 13:08:13

标签: c

下面是完整的代码

我的问题的简要摘要如下: 我在file1.c中有一个如下所述的全局结构,并通过函数“ assign_value()”在file1.c中用某个值对其进行了初始化,现在我正在通过file2.c中的函数“ print_value()”来打印此值。 / p>

问题在于:另一方面,如果我按如下所述在函数“ assign_value()”中从file1.c调用“ print_value()”,则它不会从file2.c打印适当的值,那么它将显示正确的值。

请提出我所缺少的内容,为什么我无法通过在file2.c中调用print_value()函数来打印正确的值

  file1.c

My_struct_one是包含另一个结构My_struct_two的嵌套结构,而my_struct_obj_global是file1.c中的全局变量

    //file1.c

    #include <stdio.h>

    #include "file1.h"

    typedef unsigned long int List;

    typedef struct
    {

     List* my_list;
    }My_struct_two;


     typedef struct
    {

     My_struct_two struct_two;
    }My_struct_one;


     My_struct_one struct_global;



      void assign_value()
     {
     List value=9;

     struct_global.struct_two.my_list = &value;
     print_value();
     }

    void print_value()
    {
    printf("inside print");
    printf("value=%u\n",*(struct_global.struct_two.my_list));
    }

file1.h       //file.h

  #ifndef _file1_c

  #define _file1_c

  void print_value();
  void assign_value();

  #endif

file2.c       #include

  #include "file1.h"

  int main()

  {

  assign_value();

  print_value();

  return 0;

   }

输出: 内部printvalue = 9 内部printvalue = 4195506

我的疑问是为什么我无法从file2.c访问值,

1 个答案:

答案 0 :(得分:1)

  • value是函数assign_value()中的局部变量。在输入函数时创建它,并在函数返回时销毁它。

  • 在函数print_value()中,struct_global.struct_two.my_list的值是一个悬空指针:其值是一个不再存在的变量的地址。

  • 取消引用悬空指针的值是未定义的行为。