【发布时间】:2021-10-01 15:42:14
【问题描述】:
问题陈述:- 有 n 个孩子拿着糖果。给您一个整数数组 candies,其中每个 candies[i] 代表第 i 个孩子拥有的糖果数量,以及一个整数 extraCandies,表示您拥有的额外糖果数量。
返回一个长度为 n 的布尔数组结果,如果在给第 i 个孩子所有 extraCandies 后,他们将拥有所有孩子中最多的糖果,则 result[i] 为 true,否则为 false。
请注意,多个孩子可以拥有最多数量的糖果。
输入:candies = [12,1,12], extraCandies = 10 输出:[true,false,true]
对于上述问题陈述,我正在编写以下函数:-
bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize) {
*returnSize = candiesSize;
// printf("%d ", *returnSize);
int *tempcandie = (int*)malloc(sizeof(int)*candiesSize);
int it1 = 0, it2, temp = 0;
bool result;
for (it1;it1 < candiesSize;it1++)
{
result = 1;
tempcandie[it1] = candies[it1] + extraCandies;
for (it2 = 0;it2 < candiesSize;it2++)
{
if (tempcandie[it1] <= candies[it2])
{
result = 0;
break;
}
}
tempcandie[it1] = result;
}
return (bool*)tempcandie;
}
如果我在我的 PC 中的 Visual Studio 中运行此功能,那么我在调试器窗口中可以看到 tempcandie 保持预期的结果,但如果我在一个特定的编码平台上运行它显示不同的结果可能是什么问题
平台输出:-
我无法弄清楚为什么我的输出有所不同
【问题讨论】:
-
return (bool*)tempcandie;int不是bool。如果你想从一个int数组中创建一个bool数组,分配一个bool数组,复制值,释放int数组并返回bool数组。 -
您有没有想过将
int *转换为bool *可能是个问题?作为一般规则,您应该避免尝试进行指针强制转换。您正在做的事情不需要它们,而且您会引入错误。 -
我建议使用 C 编译器而不是 C++ 编译器。
-
@KamilCuk:感谢您的输入。但即使我返回 int 数组,值 0 也只会被视为 false。我的理解正确吗?
-
首先修复您的指针错误。 那么看看还有没有问题。
标签: arrays c return boolean return-type