比如说在同一个.c文件中,a函数中给students *p中的各成员(例如id,age)赋了值,在b函数中能否通过声明相同的结构体指针students *p再通过p->id去访问。
如果定义的结构体变量是个全局变量,可以在a函数中用students *p指向这个全局变量,可以通过指针p->id对结构体各成员引用(例如id,age)赋值,在b函数中通过声明相同的结构体指针students *p指向这个全局变量,再通过p->id去访问。
如果定义的结构体变量是个局部变量,可以通过各个函数的结构体指针形参的传递方式访问结构体成员。
参考GPT和自己的思路:
是可以的。C语言中,结构体指针可以在不同的函数中传递,只要它们指向的是同一份内存空间,就可以通过指针访问同一个结构体的成员。在你的例子中,如果a函数中已经给students *p中的成员赋了值,那么在b函数中通过相同的结构体指针students *p就可以访问到这些成员的值。只需要确保在b函数中正确地传递了指针的值即可。
可以,但是要访问同一个结构体,指针必须要指向该结构体
不知道你这个问题是否已经解决, 如果还没有解决的话:p=L->next和p=L是两个事情,第一个p指的是第一个结点,第二个p指的是头节点。
之前我总是把p=L->next当做p指向头指针的指针域,导致我在后面的操作中出现蝴蝶效应,从而百思不得其解,其实这种说法也对只不过在链表建成之前也就是还是结点的时候可以这么想,在已经建成的链表中就应该想的是指向下一个结点。
最后运行结果如下