我有这段代码:
#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
指针变量)?
答案 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 );
}