将数组传递给函数时出错
Error while passing an array to a function
我正在尝试按值传递数组,或者更确切地说是指向数组的指针传递给函数 BinaryToHex。但是我一直收到错误 "conflicting types for function BinaryToHex".
这是程序的相关部分。
char *ConvertCodeToHex(char code[16])
{
char nibble[4];
char hexvalue[4];
int i;int j,k = 0;
for(i=0; code[i] != '[=10=]'; i++)
{
if((i+5)%4 == 0)
{
nibble[j] = '[=10=]';
j = 0;
hexvalue[k] = BinaryToHex(nibble);
k++;
}
nibble[j] = code[i];
j++;
}
strncpy(finalhex, hexvalue, 4); //finalhex is a global character array
return finalhex;
}
char BinaryToHex(char b[4]) //The error is caught in this line of code.
{
int temp = 0,i; char buffer;
for(i=4; i >= 0; i-- )
{
int k = b[i]-='0';
temp += k*pow(2,i);
}
//Converting decimal to hex.
if (temp == 10)
return 'A';
else if (temp == 11)
return 'B';
else if (temp == 12)
return 'C';
else if (temp == 13)
return 'D';
else if (temp == 14)
return 'E';
else if (temp == 15)
return 'F';
else
return (char)(((int)'0')+ temp);
}
您需要在 ConvertCodeToHex()
之前添加函数前向声明为 char BinaryToHex(char b[4]);
。否则,当从 ConvertCodeToHex()
调用 BinaryToHex()
时,您的编译器将不知道函数描述。
您需要在调用之前声明函数,因此请在顶部添加一行,例如
char BinaryToHex(char b[4]);
char *ConvertCodeToHex(char code[16])
{
char nibble[4];
char hexvalue[4];
int i;int j,k = 0;
for(i=0; code[i] != '[=10=]'; i++)
{
if((i+5)%4 == 0)
{
nibble[j] = '[=10=]';
j = 0;
hexvalue[k] = BinaryToHex(nibble);
k++;
}
nibble[j] = code[i];
j++;
}
strncpy(finalhex, hexvalue, 4); //finalhex is a global character array
return finalhex;
}
您不需要在函数定义中传递数组索引。只需简单地编写 char BinaryToHex(char b[])。检查它是否有效。
我正在尝试按值传递数组,或者更确切地说是指向数组的指针传递给函数 BinaryToHex。但是我一直收到错误 "conflicting types for function BinaryToHex".
这是程序的相关部分。
char *ConvertCodeToHex(char code[16])
{
char nibble[4];
char hexvalue[4];
int i;int j,k = 0;
for(i=0; code[i] != '[=10=]'; i++)
{
if((i+5)%4 == 0)
{
nibble[j] = '[=10=]';
j = 0;
hexvalue[k] = BinaryToHex(nibble);
k++;
}
nibble[j] = code[i];
j++;
}
strncpy(finalhex, hexvalue, 4); //finalhex is a global character array
return finalhex;
}
char BinaryToHex(char b[4]) //The error is caught in this line of code.
{
int temp = 0,i; char buffer;
for(i=4; i >= 0; i-- )
{
int k = b[i]-='0';
temp += k*pow(2,i);
}
//Converting decimal to hex.
if (temp == 10)
return 'A';
else if (temp == 11)
return 'B';
else if (temp == 12)
return 'C';
else if (temp == 13)
return 'D';
else if (temp == 14)
return 'E';
else if (temp == 15)
return 'F';
else
return (char)(((int)'0')+ temp);
}
您需要在 ConvertCodeToHex()
之前添加函数前向声明为 char BinaryToHex(char b[4]);
。否则,当从 ConvertCodeToHex()
调用 BinaryToHex()
时,您的编译器将不知道函数描述。
您需要在调用之前声明函数,因此请在顶部添加一行,例如
char BinaryToHex(char b[4]);
char *ConvertCodeToHex(char code[16])
{
char nibble[4];
char hexvalue[4];
int i;int j,k = 0;
for(i=0; code[i] != '[=10=]'; i++)
{
if((i+5)%4 == 0)
{
nibble[j] = '[=10=]';
j = 0;
hexvalue[k] = BinaryToHex(nibble);
k++;
}
nibble[j] = code[i];
j++;
}
strncpy(finalhex, hexvalue, 4); //finalhex is a global character array
return finalhex;
}
您不需要在函数定义中传递数组索引。只需简单地编写 char BinaryToHex(char b[])。检查它是否有效。