6.3w+
社区成员
1.void creat(student **first)//建立链表,并输入数据 ,需要二级指针
2.creat(first); //create(&first);
int main()
{
student *first=NULL;//为什么要将first赋值为NULL,可不可以不赋值啊?
// first 赋值为NULL是一种定义指针的习惯,是为了不小心使用了没有初始化的指针,
// 这种错误编译器是检查不出来的, 如果为NULL,调用它指向的对象时,编译器就能检查出来,是为了安全而这样做,
// 你也可以不赋值为NULL,这不过是一种良好的使用指针的习惯罢了.
creat(first); // 因为不是二级指针,所以first的值不会变,变的是他所指向的内存区域的值,但first这里是NULL,显然不行
// 要理解指针的值与指针所指向的内存区域不是同一个概念
// 要改变一个变量的值,可以把它的地址传给一个函数来改变, 所以,你想要改变first的值,就得传first的地址,而不是first本身
// 这里你传的是first自己,而不是他的地址,所以first仍然是0
print(first);//通过测试,我发现first为空,为什么?也就是说,first=0,但我定义的first是指针啊!
destroy(first);
return 0;
}