return从指针生成整数而没有强制[-Wint-conversion]返回候选者

时间:2016-05-04 20:12:32

标签: c

我正在学习C,但我发现那些模糊的编译器错误消息越来越令人沮丧。这是我的代码:

Exposures_1x1.txt

这会产生一个警告:

  • return在没有强制转换的情况下从指针生成整数
    • 返回候选人;

有人可以解释这些警告吗?

2 个答案:

答案 0 :(得分:4)

您的本地变量candidate是一个char数组。当你说

return candidate;

你返回一个指向char的指针。 (这是由于C中数组和指针之间非常密切的关系,如果你还不知道,你必须了解这些关系。)但是你已经声明你的函数getkey会返回一个char,而不是一个指向char的指针。

您需要使函数的返回值与其类型匹配。您可能需要更改return语句,以便返回单个char。如果您希望函数返回一个完整的字符串,您可以将其声明更改为char *getkey(),但在这种情况下,您还必须处理candidate数组的分配。

这里的警告意味着什么。你试图返回一个指针。该函数应该返回一个字符,表示为一个小整数。编译器愿意尝试将指针转换为整数,以防你真正想做的事情,但由于这通常不是一个好主意,它会警告你。实际上,在这种情况下,警告会告诉您可能犯了错误。

答案 1 :(得分:2)

getkey已声明返回char,但您正在尝试返回candidate char数组。

您可能想要返回数组中的一个元素,例如candidate[x]

错误消息说“指针”而不是“数组”的原因是编译器正在将candidate转换为指向数组中第一个元素的指针,这在某些上下文中隐式发生,例如返回,因为数组不能按C中的值返回(或作为参数传递)(参见What is array decaying?)。