int squaring_function (int *array, int i);
int main()
{
int array[5];
int i;
for(i=0; (i <= 5) ; i++)
{
array[i] = i;
printf("\nArray value %d is %d",i,array[i]);
}
for(i=0; (i <= 5) ; i++)
{
array[i] = (squaring_function(array, i));
printf("\nSquared array value %d is %d",i,array[i]);
}
return 0;
}
int squaring_function (int *array, int i)
{
return pow((array[i]),2);
}
我正在尝试使用此 squareing_function 依次对数组中的每个值(包含整数 0 到 5)进行平方。它似乎有效,但是最后一个值(应该是 5)^2 没有出现为 25。cmd window 我尝试将数组大小减少到 5(因此最后一个值为 4),但这也会打印错误的数字。 我对 C 很陌生,不明白为什么最后一个值失败了。
我知道我可以在没有单独的函数的情况下做到这一点,但是我很想知道为什么这不起作用。
任何帮助将不胜感激。 谢谢, 丹。
最佳答案
您的代码中有 2 个错误。首先是您访问数组越界。内存规则是 n
元素索引必须小于 n,因此 < 5
,不是<= 5
。如果你想数到5,那么你必须声明
int array[6];
<小时/>
另一个问题是您的代码计算 pow(5, 2)
如 24.99999999 被截断为 24。数字 24 直接位于 array
之后的内存位置。覆盖i
;然后导致 array[i]
评估为 array[24]
碰巧都是零。
使用array[i] * array[i]
而不是pow
以确保计算是用整数完成的。
关于c - 尝试创建一个对数组中所有值进行平方的函数。最后一个值出现奇怪的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52957509/