newNode((,我不明白为什么我必须为 p=x 添加 *我创建了一个名为x(带有data&next(的节点,并使用malloc创建了一个新的内存空间*p,然后让 p = x,但通过我必须为 p=x 添加 *?
#include<stdio.h>
#include<stdlib.h>
struct Node{
int data;
Node *next;
};
Node *newNode(int data, Node *next){
Node x = {data, next};
Node *p = (Node *)malloc(sizeof(Node));
*p = x; //i dont understand why an * need to be added here
return p;
}
showNode(const struct Node *p){
printf("%dn", p->data);
}
int main(){
Node *pHead = NULL;
for(int i=4; i>=0; i--) {
pHead = newNode(i,pHead);
}
printf("%dn", pHead->next->next->next->data);
Node* p = pHead;
while(p != NULL){
showNode(p);
p = p-> next;
}
p = pHead;
while(p != NULL){
Node *pTemp = p;
p = p->next;
free(pTemp);
}
}
是一个指针。这只是 c/c++ 中的语法。
如果您使用的是不带 * 的指针,则表示您想要内存地址。当您使用 * 时,您希望该地址上的内容。
如果你只看作业上方的一行,它说
Node *p = ...;
所以*p
是一个Node
.宣言x
也是如此Node x = ...;
如果要将一个Node
分配给另一个,请使用它们的名称x
和*p
。
*p 有两个含义。 1(在当时声明...就像你写 int *p 一样。这意味着您已声明指向整数的指针。2( 声明时不行。*p 现在仅表示存储在 p 指向的内存地址中的数据。