我正在尝试从四个输入 a、b、c 和 d 测试逻辑函数。
每个输入为 0 或 1。
我一直在尝试用数组来实现这一点。
如果 logicXY 数组中的列与 combLogic 数组中的列匹配,我想传回 1。
int comb(int** combLogic, int** logicXY){
int x, y, logicOut;
for ( x = 0; x < 4; x++ ){
if (logicXY[0][x] == combLogic[x]){
logicOut = 1;
}
}
return logicOut;
}
int main void(){
int** combLogic[4] = {a,b,c,d}; /*logic input*/
int** logic[4][4] = {{1,0,0,1}, {1,0,1,1}, {0,1,0,0}, {0,1}}; /*return 1 if any of these combinations match the logic input*/
int comb(combLogic, logicXY); /*send to function*/
}
我知道该功能不完整,但我认为我没有正确传递数组。我已经阅读了许多教程,但我似乎无法掌握理论。
编辑 我已经向前迈出了几步,但它仍然无法正常工作。这就是我现在所拥有的。
.h 中的函数声明
int comb(logicInput,logicTest);
.c 中的函数
/* Function - Combination */
int comb(int** logicInput, int** logicTest){
int x, y, logicOut;
for ( x = 0; x < 4; x++ ){
if (logicTest[0][x] == logicInput[x]){
logicOut = 1;
}
}
return logicOut;
}
main.c 部分的循环
int output = 0;
int logicInput[4] = {0,1,1,1};
int logicTest[4][4] = {{1,0,0,1}, {1,0,1,1}, {0,1,0,0}, {0,1,1,1}};
int comb(logicInput,logicTest);
output = comb;
代码跳过int comb(logicInput,LogicTest)
并且从不执行该功能。如果我int
从行中取出,那么它会执行函数,返回值,但是当值被写入输出时,它与函数返回的值完全不同。
编辑
我已经对代码进行了一些更改,因此它似乎确实可以工作,并且编译器仅针对 .h 中的函数声明发出一个警告,我似乎无法修复。
warning: parameter names (without types) in function declaration [enabled by default]
.h 中的函数声明
int comb(logicInput,logicTest);
.c 中的函数
int comb(int** logicInput, int** logicTest){ /*Points to the arrarys in the main program*/
int x, i, logicOut;
for(i = 0; i < 4; i++){ /*test each column*/
for ( x = 0; x < 4; x++ ){ /*test each row*/
if (logicTest[i][x] == logicInput[i][x]){
logicOut = 1;
break;
}
}
if(logicOut == 1)break; /*Break when logicOut == 1 the first time it happens*/
}
return logicOut;
}
在 main.c 中循环
int output;
int logicInputC1[4] = {0,1,0,1};
int logicTestC1[4][4] = {{1,0,0,1}, {1,0,1,1}, {0,1,0,0}, {0,1,0,1}};
output = comb(logicInputC1,logicTestC1);
如果我偏离此代码,我似乎最终会导致编译器无法构建甚至更多警告。