【问题标题】:variable may be used before being set变量可以在设置之前使用
【发布时间】:2015-08-21 18:32:28
【问题描述】:

当我创建一个指向结构 example *e 的指针时,我得到“变量可以在设置之前使用”。如果我使用变量而不是 example e,我不会收到错误消息。这是因为我没有为指针分配内存吗?

typedef struct example {
    int a;
}example;

void test (){

    example *e;
    e->a=1;
    printf_all("val %d",e->a);
}

【问题讨论】:

  • 如何使用非指针变量来编译这段代码??? (顺便说一句,你甚至懒得写正确的标题?)。

标签: c memory-management initialization malloc


【解决方案1】:

e 没有指向任何东西。您正在使用未初始化的指针。您通过无效指针“设置”,然后尝试访问它。

您的指针应该指向一个example 实例。例如:

example exampleInstance;
example * examplePointer = &exampleInstance;

【讨论】:

    【解决方案2】:

    指针有一个不确定的值。因此程序具有未定义的行为。

    您应该为example 类型的对象分配内存,您将在其中写入数据。例如

    example *e = malloc( sizeof( *e ) );
    e->a = 1;
    

    在这种情况下,您应该在不再需要内存时释放内存。

    或者

    example obj;
    example *e = &obj;
    e->a = 1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多