我的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;
任何人都可以帮助我。 提前谢谢。
答案 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 NULL
值
双。我想你的意思是0.0
。答案 2 :(得分:0)
max_x的类型为double,NULL的类型为(void *)。是什么让你觉得它们兼容?
尝试ut->dt[10].max_x = 0.0;
访问dt [10]超出范围,数组索引从0开始!