#include "stdio.h"
#include "stdlib.h"
struct Student{
int age;
};
void Init(struct Student* pStudent)
{
pStudent = (struct Student*)malloc(sizeof(Student));
}
int main()
{
struct Student *pStudent;
Init(pStudent);
pStudent->age = 1;
return 0;
}
这段代码会奔溃,我调试发现指针pStudent没有初始化成功。然后我在Init里面修改pStudent->age的值是没问题的,请大家指点一下
PS: C语言传递参数都是值语义,所有的东西都是拷贝。想要修改就得传递指针,你现在想要修改一个指针,那么就得传递一个指针的指针。
void Init(struct Student** pOut)
这种也是可以得。一般推荐返回一个指针。