J_X_W_Q 2024-02-08 13:39 采纳率: 64.3%
浏览 6
已结题

c语言基础,间接级别不同


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("!");
            }
         }
     }
}

vs2022上显示“c4047,‘==’:‘int’与‘void*’的间接级别不同”,请问这是什么意思

  • 写回答

3条回答 默认 最新

  • GISer Liu 2024-02-08 13:41
    关注

    该回答引用自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

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)