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未初始化?如果是这样,我该如何初始化它呢?
答案 0 :(得分:2)
改变这个:
person *p;
对此:
person p;
而且:
person_editID(p,2);
对此:
person_editID(&p,2);