gpt4 book ai didi

C:在调车场实现中没有强制转换的指针整数

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

我正在将中缀表示法转换为反向波兰表示法。我需要将堆栈顶部字符的优先级与字符串中的下一个字符 char *c 进行比较。每个节点中的数据应指向一个字符。但是,行 int testResult = test(stack->head->data, c[i]); 产生错误:

错误:传递“test”的参数 1 从指针生成整数而不进行强制转换。

如何解决这个错误(不修改结构)?传递 stack->head->data 有什么问题?我应该传递什么?

typedef struct Node
{
void *data;
struct Node *next;
struct Node *prev;
} Node;

typedef struct LinkedList
{
Node *head;
Node *tail;
} LinkedList;

typedef LinkedList Stack;

int precedence(char c) {
switch(c) {
...
}
}

int test(char a, char b) {
int A = precedence(a);
int B = precedence(b);
...
}

void function(char *c) {
int i;
Stack *stack = initialise_stack();

for (i = 0; i < strlen(expr); i++) {
int testResult = test(stack->head->data, c[i]);
...
}
}

最佳答案

假设 stack->head->data 是指向 char 的指针,这将起作用:

 int testResult = test(*(char*)stack->head->data, c[i]);

关于C:在调车场实现中没有强制转换的指针整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47824005/

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