C语言中的去引用问题

C语言中的去引用问题,c,data-structures,memory-management,C,Data Structures,Memory Management,当我尝试编译下面的代码时,会出现以下错误: 错误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,

当我尝试编译下面的代码时,会出现以下错误:

错误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; 
  }
}
#定义真1
#定义假0;
#包括
类型定义结构Con{
双samTime[2];
双森[2];
int检验[2];
}CON,*CON_PTR;
无效GM(双**TTXY){
国际编码;
int numOfSen=2;
int startTime=0;
康康;
if((con=(con_PTR)malloc(numOfSen*sizeof(con)))==NULL){
printf(“Malloc失败\n”);
出口(1);
}
对于(NoS=0;NoS=TTXY[1]){
con[NoS]。测试[0]=真;
}
if(con[NoS].samTime[1]==TTXY[1]){
con[NoS]。测试[1]=真;
}
}

TTXY被声明为double**,因此TTXY[1]是double*,而不是double,因此您无法将TTXY[1]与con[NoS]进行比较。samTime[0]


我猜可能是您在函数头中输入了错误,请尝试将其修改为空main(double*TTXY)?

TTXY声明为double**,因此TTXY[1]是double*,而不是double,因此您无法将TTXY[1]与con[NoS]进行比较。samTime[0]


我猜可能是你的函数头有输入错误,试着修改它使main无效(double*TTXY)?

为什么你的主函数有签名

(int)(double**)
要成为有效的C程序,main必须具有以下签名:

(int)(int, char**)

如果您希望main以另一种方式处理它的参数,那么您需要自己转换它们

为什么您的主函数有签名

(int)(double**)
要成为有效的C程序,main必须具有以下签名:

(int)(int, char**)

如果您希望main以另一种方式处理它的参数,那么您需要自己转换它们

首先,缺少一个分号

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)
)就足够了,可读性也更高。

首先,缺少一个分号

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)
)就足够了,可读性也更高。

程序中有四个语法错误

  • 整数编号
    -缺少分号
  • con
    -使用前未声明此变量
  • 传感器
    不是
    struct Con
    的成员
  • TTXY
    是指向double的指针而不是指向double的指针,因此您应该使用
    *TTXY[1]
    通过
    TTXY
    双指针数组中的第一个双指针访问第一个双点
  • 注:

  • 通常,您应该遵循
    main
    函数的标准格式,但不定义自己的版本。
    main
    函数的正常版本应该是
    int main(void)
    int main(int argc,char*argv[])
  • 你应该包括让gcc高兴到不给你任何警告

  • 程序中有四个语法错误

  • 整数编号
    -缺少分号
  • con
    -使用前未声明此变量
  • 传感器
    不是
    struct Con
    的成员
  • TTXY
    是指向double的指针而不是指向double的指针,因此您应该使用
    *TTXY[1]
    通过
    TTXY
    双指针数组中的第一个双指针访问第一个双点
  • 注:

  • 通常,您应该遵循
    main
    函数的标准格式,但不定义自己的版本。
    main
    函数的正常版本应该是
    int main(void)
    int main(int argc,char*argv[])
  • 你应该包括让gcc高兴到不给你任何警告

  • 张贴实际代码。您发布的示例中没有定义
    con
    TTXY
    。此外,行
    int NoS
    格式不正确。#定义FALSE包含分号是一个等待发生的错误。发布实际代码。您发布的示例中没有定义
    con
    TTXY
    。此外,行
    int-NoS
    格式不正确。#定义FALSE包含分号是一个等待发生的错误。@anon我建议您更改函数名,因为使用“main”可能会导致歧义。
    main
    的唯一标准签名是:
    int-main(void)
    int-main(int-argc,char**argv)
    void main(double**TTXY)
    永远不会工作。@anon我建议您更改函数名,因为使用“main”可能会导致歧义。
    main
    的唯一标准签名是:
    int main(void)
    int main(int argc,char**argv)
    <代码>无效主(双**TTXY)将永远无法工作。