如何解决C 中的冲突类型
/*decleration of the functions on one file*/
typedef double *mat[4][4];
void catcher(void *,mat *);
void findMat(mat *,char *,int *);
int main()
{
mat MAT_A={0};
mat MAT_B={0};
mat MAT_C={0};
mat MAT_D={0};
mat MAT_E={0};
mat MAT_F={0};
mat *matArray[6]={&MAT_A,&MAT_B,&MAT_C,&MAT_D,&MAT_E,&MAT_F};
void (*funcArray[5])(mat)={read_mat,print_mat,add_mat,sub_mat,mul_mat,mul_scalar,trans_mat,stop};
catcher(&funcArray,&matArray);
return 1;
}
/*same file as main function*/
void catcher(void *funcArray,mat *matArray){
char *command[256];
char *funcName[11];/*size of the longest function name*/
char *matName1[6],*matName2[6],*matName3[6];
char *matNames[3]={&matName1,&matName2,&matName3};
int *numLoc[3]={0};
int i,k,j=0;
double *numbers[16]={0};
printf("Please insert a command\n");
fgets(command,sizeof(command),stdin);/*reads a string for command*/
puts(command);
for(i=0;command[i]!=" ";i++){/*gets the name of the function the user wants to run*/
/*if(command[i]!=" "){*/
funcName[j]=command[i];
j++;
/*}*/
}
funcName[j]="\0";
if(funcName=="read_mat"){
matNameReader(&funcName,i,&command,&matNames);
numReader(i,&numbers);
findMat(&matArray,&matNames,&numLoc);
read_mat(&matNames[*numLoc[1]],&numbers);
catch(&funcArray,&matArray);
}
}
/*diffrent file with all other functions*/
void findMat(mat *matArray[6],char *matNames[3],int *numLoc[3])
{
int i,j=0;
for (i=0;i<6;i++){
if(*matNames[j]==*matArray[i]){
*numLoc[j]=i;
j++;
}
}
}
错误:'findMat' 的类型冲突 void findMat(mat *matArray[6],int * "
请帮我理解这里有什么问题
解决方法
findMat
的声明:
void findMat(mat *,char *,int *);
定义:
void findMat(mat *matArray[6],char *matNames[3],int *numLoc[3])
参数类型显然不相同。
mat *matArray
是“指向 mat 的指针”,mat *matArray[6]
是“指向 mat 的指针的指针”(因为数组不能作为函数参数,它们会自动衰减为指针)
您可以执行 void findMat(mat *matArray,char *matNames,int *numLoc)
或
void findMat(mat matArray[],char matNames[],int numLoc[])
在声明中获得相同的类型和定义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。