gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:48:08 26 4
gpt4 key购买 nike

请看一下 Node *newNode(),我不明白为什么我必须为 p=x 添加 *我创建了一个名为x的节点(带有数据和下一个),并使用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("%d\n", p->data);
}

int main(){
Node *pHead = NULL;
for(int i=4; i>=0; i--) {
pHead = newNode(i,pHead);
}
printf("%d\n", 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++ 中的语法。

如果您使用不带 * 的指针,则表示您需要内存地址。当您使用 * 时,您需要的是该地址上的内容。

关于c - 函数指针等于函数内的另一个指针,为什么需要加*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43091923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com