请大佬解答一下结构体指针的相互赋值,谢谢

0
typedef struct Node		// 定义一个节点
{
	int data;			// 数据域
	struct Node* pNext;	// 指针域
}NODE, *PNODE;

假如这样定义 PNODE pHead, pNew, pHead 存放的数据域是 1,指针域是 x 的地址, pNew 存放的数据是 2,指针域是 y 的地址,若将 pNew 赋值给 pHead,即 pHead=pNew,那么 pHead 的指针域和数据域都会变成 pNew 的数值吗?

C
ava

2020-5-13

0

对于这样的代码:

PNODE pHead, pNew;
……
pHead = pNew;

pHead 和 pNew 都是指针,执行完赋值后,pHead 和 pNew 值相同,即指向同一个内存位置,所以 pHead 的所有成员都和 pNew 的相同。

注意,两者成员相同是因为两者指向同一个内存位置,pHead 和 pNew 是别名的关系,并不是相等的关系。例如这时候执行:

pNew->data = 100;

那么 pHead->data 会同时变为 100,因为两者就是同样的内存。

ava
慢羊羊

2020-5-14

技术讨论社区