2010-03-31 99 views
0

我的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; 

任何人都可以帮助我。 在此先感谢。

回答

4

您试图将双精度值设置为NULL,即使编译,它也会混合两个不兼容的术语。 (在C类库NULL的一些版本中被简单地定义为0,在别人作为(void*)0 - 。在后者的情况下,你获得这样的代码的错误)另外

,尝试访问大小的数组的索引10 10,这是出界 - 的元素从0到9的索引,以便试试这个:

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

我可以看到

ut->dt[10].max_x = NULL; 
  • 的不知疲倦的两个问题x 10无效,它 应该是0-9
  • 您正在将一个NULL值分配给 double。我想你的意思是0.0
0
  1. MAX_X是double类型,NULL的类型的(无效*)。是什么让你觉得它们兼容?

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

  2. 访问DT [10]是出界,数组索引从0开始!

+0

感谢您的时间 – ambika 2010-03-31 11:41:23