如何将结构指针变量作为参数传递,以便在C中编辑它

时间:2014-01-04 17:40:39

标签: c pointers struct arguments argument-passing

C语言

如何将结构指针变量作为参数发送到要编辑该结构变量的函数?

我在单独的头文件中有以下结构:

typedef struct {
    unsigned int id;
    unsigned int value;
} type1;

typedef struct {
    unsigned int id;
    type1 children[32];
    unsigned int numChildren;
} person;

我希望能够做到这一点:

void person_editID(person *p, unsigned int newID) {
    p->id = newID;
}

在此:

void function2() {
    person *p;
    person_editID(p,2);
    printf("Person ID: %d\n",p->id);
    person_editID(p,4);
    printf("Person ID: %d\n",p->id);
}

(这两个函数在不同的文件中)

得到结果:

Person ID: 2
Person ID: 4

但是上面的代码有一个错误:

  

SIGSEGV ... bad addr 0x0(dataseg);错误的0x6 nopage写...

是因为function2 p未初始化?如果是这样,我该如何初始化它呢?

1 个答案:

答案 0 :(得分:2)

改变这个:

person *p;

对此:

person p;

而且:

person_editID(p,2);

对此:

person_editID(&p,2);