c-函数指针等于函数内的另一个指针,为什么需要添加*


请查看 Node *

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 指向的内存地址中的数据。

相关内容

  • 没有找到相关文章

最新更新