C struct问题

1 c struct pointers

我是C初学者,我很好奇为什么每次都给我一个Seg Fault:

#include <stdio.h>
#include <stdlib.h>

struct Wrapper {
  int value;
};

int main () {
  struct Wrapper *test;
  test->value = 5;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道我还没有完全理解指针,但我想到了

struct_ptr->field 
Run Code Online (Sandbox Code Playgroud)

是相同的

(*struct_ptr).field
Run Code Online (Sandbox Code Playgroud)

因此,尝试对场进行任务应该没问题.这与预期的效果如下:

struct Wrapper test;
test.value = 5;
Run Code Online (Sandbox Code Playgroud)

但我很好奇为什么使用指针导致Seg Fault.

我在Ubuntu 9.04(i486-linux-gnu),gcc版本4.4.1

Fre*_*son 12

您没有将指针指定给任何东西.这是一个未初始化的指针,指向谁知道什么,所以结果是未定义的.

您可以将指针指定给动态创建的实例,如下所示:

int main () {
  struct Wrapper *test;
  test = (struct Wrapper *) malloc(sizeof(struct Wrapper));
  test->value = 5;
  free(test);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:意识到这是C,而不是C++.相应修复了代码示例.