错误:赋值中的类型不兼容

时间:2010-03-31 10:18:29

标签: c

我的C代码

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

int test(int x, P *ut) {
    int point = 10;

    ut->dt[10].max_x = NULL;
}

int main(int argc, char** argv) {

    return (EXIT_SUCCESS);
}

我的help.h文件代码

typedef struct{
    double max_x;
    double max_y;
}X;

typedef struct{
    X dt[10];
}P;

我收到了一个错误,即

error: incompatible types in assignment

错误来自

ut->dt[10].max_x = NULL;

任何人都可以帮助我。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

您正在尝试将double值设置为NULL,即使编译,也会混合两个不兼容的术语。 (在某些版本的C类库中,NULL被定义为0,其他版本被定义为(void*)0 - 在后一种情况下,您会收到此类代码的错误。)

此外,您尝试访问大小为10的数组的索引10,该数组超出范围 - 元素的索引从0到9.所以试试这个:

ut->dt[9].max_x = 0.0;

答案 1 :(得分:0)

我可以在

中看到两个问题
ut->dt[10].max_x = NULL;
  • 索引10无效 应该是0-9
  • 您正在为a分配NULL值 双。我想你的意思是0.0

答案 2 :(得分:0)

  1. max_x的类型为double,NULL的类型为(void *)。是什么让你觉得它们兼容?

    尝试ut->dt[10].max_x = 0.0;

  2. 访问dt [10]超出范围,数组索引从0开始!