gpt4 book ai didi

c - 为什么我在这里收到不兼容的指针类型警告?

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:26 25 4
gpt4 key购买 nike

<分区>

我在这里使用链表实现了一个非常基本的堆栈作为练习。

我的程序有以下三个文件。

堆栈.h

#ifndef STACK_H
#define STACK_H

#include <stdio.h>

struct Node {int content; struct node *next;};

void push(struct Node **node, int i);
int pop(struct Node **node);

#endif

堆栈.c

#include <stdio.h>
#include <stdlib.h>
#include "stack.h"

void push(struct Node **node, int i)
{
struct Node *new_node = malloc(sizeof(struct Node));

if (!(*node)){
(*new_node).content = i;
(*new_node).next = NULL;
*node = new_node;

return;
}

(*new_node).content = i;
(*new_node).next = (struct Node *)*node;
*node = new_node;

return;
}

int pop(struct Node **node)
{
if (*node == NULL){
printf("Stack is empty\n");
exit(EXIT_FAILURE);
}

struct Node *temp = (**node).next;
int i = (**node).content;

free(*node);
*node = temp;

return i;
}

ma​​in.c

#include <stdio.h>
#include "stack.h"

struct Node *top = NULL;

int main(void)
{
push(&top, 2);
printf("%d\n\n", pop(&top));
return 0;
}

然而,当我编译它时,我收到以下警告

stack.c: In function ‘push’:
stack.c:18:19: warning: assignment from incompatible pointer type
(*new_node).next = (struct Node *)*node;
^
stack.c: In function ‘pop’:
stack.c:31:22: warning: initialization from incompatible pointer type
struct Node *temp = (**node).next;
^

尽管程序尽管有这些警告仍运行并给出了正确的输出,但我仍然想了解为什么会这样。

为什么我会收到这些警告?我该如何修复它们?

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