*p->next和(*p)->next等价吗
时间: 2023-08-18 14:08:20 浏览: 121
软件测试---NextDate函数---测试用例详解.ppt
### 回答1:
不完全等价。
*p->next会先解引用指针p,然后再访问该指针所指向的结构体中的next成员。
而(*p)->next会先解引用指针p,得到指向结构体的指针,然后再访问该指针所指向的结构体中的next成员。
所以,如果p是指向结构体的指针,这两种方式是等价的;但如果p是一个结构体指针的指针,那么它们就不等价了。
### 回答2:
*p->next和(*p)->next是不等价的。
首先,让我们明确指针和箭头操作符的含义。一个指针是一个变量,它存储另一个变量的内存地址。箭头操作符 "->" 用于访问指针所指向的结构体或类的成员。
*p->next 的意思是首先将指针 p 解引用,然后再使用箭头操作符访问 p 所指向结构体或类的成员 next。这可以理解为先取出指针 p 的值,然后再通过箭头操作符来访问这个值所指向的结构体或类的成员 next。
(*p)->next 的意思是先将指针 p 解引用,再通过解引用后的指针使用点操作符 "." 来访问这个指针所指向的结构体或类的成员 next。这可以理解为先解引用指针 p,取出指针 p 所指向的结构体或类,然后再通过点操作符来访问该结构体或类的成员 next。
因此,*p->next 和 (*p)->next 是不等价的。前者的运算顺序是先取值再操作,而后者的运算顺序是先解引用再取值。正确的使用方式取决于指针 p 所指向的类型和具体的应用场景。
### 回答3:
*p->next和(*p)->next在C语言中是不等价的。
*p->next是对指针p解引用后访问其next成员。这表示p是一个指向结构体的指针,通过解引用p,我们可以访问该结构体的成员next。
而(*p)->next是先对指针p进行解引用操作,得到的是一个指向指针的指针。再通过解引用该指针指向的值访问其成员next。实际上,(*p)->next是表示p指向的是一个指向结构体指针的指针,我们需要先解引用指针p得到指向结构体指针的指针,然后再通过该指针访问其成员next。
因此,*p->next和(*p)->next是不等价的。前者表示通过指针p直接访问结构体的成员next,后者则需要经过多一次的解引用操作,才能访问到所需的成员。
阅读全文