【发布时间】:2014-01-04 17:40:38
【问题描述】:
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... 错误地址 0x0 (dataseg); err 0x6 nopage write ...
是不是因为function2 p 没有初始化?如果是这样,我该如何初始化它?
【问题讨论】:
标签: c pointers struct arguments argument-passing