我有一个存储坐标(xy)int arr[3][3]
的二维数组。如何只对数组中的一个维度进行计算?
如果我对 x坐标的平均值感兴趣,我会输入:
float sumX = (float) arr[0] + arr[1] + arr[3] / 3.0f;
当我这样做时,我收到错误invalid cast from type 'int*' to type 'float'
。我怎能不允许这样做?
答案 0 :(得分:1)
假设每行的第一个元素只包含x坐标,你应该这样做 -
float sumX = (arr[0][0] + arr[1][0] + arr[2][0]) / 3.0f;
arr[0][0]
为您提供存储在数组第一行第一个元素中的值,arr[1][0]
为您提供存储在数组第二行第一个元素中的值,依此类推。根据您的需要更改上面的表达。
答案 1 :(得分:1)
尝试:
float sumX = (float) (arr[0][0] + arr[1][0] + arr[2][0]) / 3.0f;
您需要使用括号对要操作的内容进行分组,您需要指定单个值而不是行。
答案 2 :(得分:-1)
在这种情况下将返回地址
float sumX = (float) arr[0] + arr[1] + arr[3] / 3.0f;
要返回值,请使用间接运算符
float sumX = (float) ( *arr[0] + *arr[1] + *arr[3] )/ 3.0f;