该回答引用自GPT-3.5,由博主GIS_Liu编写:
这个问题是由于在代码中使用了一个 void*
类型的指针,而在与之比较的时候使用了 int
类型,这导致了编译器报错提示"‘==’:‘int’与‘void*’的间接级别不同"。
在 C 语言中,void*
类型是一种通用指针类型,可以指向任何类型的数据,而 int
类型是整数类型。当你尝试用 ==
运算符比较 int
类型和 void*
类型时,编译器会发出警告,因为这两种类型的数据不是直接可比较的。
要解决这个问题,你需要考虑清楚你的代码逻辑,并确定你要做的比较操作。如果 p->camp
是一个指针类型的变量,你可能需要将其转换为相应的类型再进行比较。如果 p->camp
是一个整数类型的变量,你需要确保 p->camp
的类型和你想要比较的类型一致。
根据你的代码,假设 camp
是一个指向某个结构体的指针,你可能需要修改你的比较语句,使其比较结构体的某个成员变量,而不是整个指针。
下面是一个可能的解决方案:
void qp(struct zb (*p)) {
int i, j;
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++, p++) {
printf(" ");
if (p->camp == NULL) {
printf("!");
}
// 假设 camp 是一个结构体指针的成员
else if (p->camp->some_member == some_value) {
// 执行某些操作
}
}
}
}
在这个解决方案中,假设 camp
是一个指向结构体的指针,并且我们想要比较结构体的某个成员变量。我们先判断 p->camp
是否为空指针,如果不为空,则可以通过 p->camp->some_member
来访问结构体的成员变量,并进行比较。
请根据你的实际需求修改代码中的比较部分。
![img](https://userblink.csdnimg.cn/direct/3281b502cb5447e0aa06db9ebdf7f434.png)
如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!