传结构体地址与传结构体指针二者都可以作为传出参数,因为接受函数必须为其定义一个结构指针来接收,这样在函数内就可以修改结构体,在这点上二者没有区别。 定义结构体指针未分配地址空间就作为参数传递会,如果你想把它作为传出参数的话, 你必须这么写; void get(struct student **p); //用p来接收 main() { struct student *a; get(&a); } 这样你也能得到你想要的结果。当然你需要在get()函数中用malloc()为其 动态分配内存空间。 你是想知道接收函数的结构体是如何分配的吗? 在接收函数中理论上他会在它自己的函数栈帧复制一份实参结构体拷贝,如果你传的是结构体本身! 这样你对结构体的修改不会对实参有影响。 |