如何使用指向struct的指针访问/修改struct中的变量?

时间:2015-11-11 00:46:43

标签: c pointers struct typedef

我有这段代码:

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

typedef struct vector_{
    int x;
    double y;
    double z;
} *vector;

void modi(vector a);

int main() {
  vector var;
  var->x = 2;
  modi(var);
  return 0;
}

void modi(vector a){
  printf("avant modif %d",a->x);
  a->x = 5;
  printf("avant modif %d",a->x);
}

我试图运行它但是我遇到了分段错误。

问题很简单:使用struct指针变量进行访问/修改。

我查看Stack Overflow但我的问题答案不完整:https://stackoverflow.com/a/1544134

在这种情况下访问/修改的正确方法是什么(struct指针变量)?

1 个答案:

答案 0 :(得分:1)

请试试这个,它有效,我扩展了一下。请阅读代码中的注释。

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

struct vector_
{
  int x;
  double y;
  double z;
};

typedef struct vector_ *vector;
void modi( vector a );

int main(  )
{
  struct vector_ av;    // we have a structure av
  vector var = &av;     // pointer var points to av
  var->x = 2;

  printf( "\ndans main() avant call to modi() %d", var->x );

  modi( var );

  printf( "\ndans main() apres call to modi() %d", var->x );
  return 0;
}

void modi( vector a )
{
  printf( "\ndans modi() avant modif %d", a->x );
  a->x = 5;
  printf( "\ndans modi() apres modif %d", a->x );
}