当我尝试编译下面的代码时,我收到以下错误:
错误C2440:'> =':无法从'double *'转换为'double'
错误C2440:'> =':无法从'double *'转换为'double'
我相信我正确地取消引用一切
#define TRUE 1
#define FALSE 0;
#include <stdio.h>
typedef struct Con{
double samTime[2];
double sen[2];
int test[2];
} CON, *CON_PTR;
void GM(double **TTXY) {
int NoS;
int numOfSen = 2;
int startTime =0;
CON con;
if((con = (CON_PTR) malloc(numOfSen*sizeof(CON)))==NULL) {
printf(“Malloc failed\n”);
exit(1);
}
for (NoS=0;NoS<numOfSen;NoS++) {
con[NoS].samTime[0] = startTime;
con[NoS].samTime[1] = startTime;
con[NoS].sensor[0] = 0;
con[NoS].sensor[1] = 0;
con[NoS].test[0] = FALSE;
con[NoS].test[1] = FALSE;
}
if (con[NoS].samTime[0] >= TTXY[1]) {
con[NoS].test[0] = TRUE;
}
if (con[NoS].samTime[1] == TTXY[1]) {
con[NoS].test[1] = TRUE;
}
}
答案 0 :(得分:1)
TTXY声明为双**,因此TTXY [1]为双*,而不是双倍,因此您无法将TTXY [1]与con [NoS] .samTime [0]进行比较。
我猜你可能在功能头上有拼写错误,尝试将其修改为void main(double * TTXY)?
答案 1 :(得分:1)
为什么你的主要功能有签名
(int)(double**)
要成为有效的C程序,main必须具有签名:
(int)(int, char**)
如果你想让main以另一种方式处理它的参数,那么你需要自己转换它们。
答案 2 :(得分:1)
首先,缺少分号
int NoS
并且您的主要功能不正确,此必须是
之一int main()
int main(int argc, char **argv)
void main() // not standard but allowed by some compilers (with warning)
至于你的问题,不是你没有正确解除引用它,因为你的TTXY
数组是二维的。所以它应该像
if (con[NoS].samTime[0] >= TTXY[1][some other number]) {
适用于您的代码。如果其他人应该理解代码,你应该为你的变量使用更多的描述性名称。
如果TTXY
真的应该是一维数组,那么你不需要通过引用传递它(function(&TTXY)
),传递指针值(function(TTXY)
)将是足够多,可读性更强。
答案 3 :(得分:0)
程序中有四个语法错误。
int Nos
- 错过了分号。con
- 使用前未声明此变量。sensor
不是struct Con
。TTXY
是一个指向double而不是指向double的指针的指针,所以你应该使用*TTXY[1]
通过TTXY
双指针数组中的第一个双指针来获取第一个双点注意:
main
函数的标准格式,但未定义自己的版本。main
函数的正常版本应为int main(void)
或int main(int argc, char *argv[])
。< / LI>