我正在学习 C,但我发现那些模糊的编译器错误消息越来越令人沮丧。这是我的代码:
char getkey (int minimo, int maximo, int alphalen, int index, char alpha[])
{
int cociente, residuo, cont;
int i = 0;
char cand[maximo+1];
char candidate[maximo+1];
while (index != 0)
{
cociente = index / alphalen;
residuo = index%alphalen;
cand[i] = residuo;
index = cociente;
i+=1;
}
for (cont=i-1; cont>=0; cont--)
{
int pos = cand [cont];
candidate[i] = alpha[pos];
}
return candidate;
}
这会产生一个警告:
- return 从指针生成整数而不进行强制转换
- 回选候选人;
有人可以解释这些警告吗?
最佳答案
您的局部变量 candidate
是一个 char 数组。当你说
return candidate;
你返回一个指向 char 的指针。 (这是由于 C 中数组和指针之间的关系非常密切,如果您还不知道,则必须了解这一点。)但是您已经声明您的函数 getkey
返回一个char,不是指向 char 的指针。
您需要使函数的返回值与其类型匹配。您可能希望更改 return
语句,使其返回单个字符。如果您想让函数返回整个字符串,您可以将其声明更改为 char *getkey()
,但在这种情况下,您还必须注意 的分配>候选
数组。
警告的含义如下。您试图返回一个指针。该函数应该返回一个字符,该字符表示为一个小整数。编译愿意尝试将指针转换为整数,以防万一这是您真正想要做的,但由于这通常不是一个好主意,它会警告您。事实上,在这种情况下,警告会告诉您您可能犯了错误。
关于c - return 从指针生成整数而不进行强制转换 [-Wint-conversion] return candidate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037165/