我有以下代码:
#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);
}
我尝试运行它,但是遇到了细分错误。
问题很简单:使用结构指针变量进行访问/修改。
我查看堆栈溢出问题,但是对于我的问题却没有得到完整的答案:https://stackoverflow.com/a/1544134
在这种情况下(
struct
指针变量)访问/修改的正确方法是什么? 最佳答案
请尝试一下,它有效,我扩大了一点。请阅读代码中的注释。
#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 );
}