我尝试使用指针将两个数组发送到一个函数。
接下来,我尝试将两个 * 数组(作为函数调用中的参数发送)中解除引用的值赋给两个(非指针)数组,在那里可以更容易地操作它们。
注意:没有对象或类。我没有看到任何动态内存处理(新建、删除)的结果。
main中的原始数组:
int arr_fractions[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
int arr_converted_values[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
这是函数调用,主要是:
arr_converted_values[2][7] = decimal_conversion(arr_decimals, *arr_converted_values, &var_fract_length);
功能:
int decimal_conversion(long double* arr_temp_decimals, int* arr_converted_values, int* var_fract_length)
{
// pointer retrieval ----------------------------------------------------------------
long double arr_temp_decimals[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
int arr_temp_values[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
int var_tempt_fract_value = *var_fract_length;
for (int* var_temp_storage = 0; *var_temp_storage < *var_fract_length; *var_temp_storage++)
{
arr_temp_decimals[0][*var_temp_storage] = &arr_decimals[0][*var_temp_storage];
arr_temp_decimals[1][*var_temp_storage] = &arr_decimals[1][*var_temp_storage];
arr_temp_values[0][*var_temp_storage] = arr_converted_values[0][var_temp_storage];
arr_temp_values[1][*var_temp_storage] = arr_converted_values[1][var_temp_storage];
}
// --------------------------------------------------------------------------------------------
...
...
...
return (*arr_converted_values);
}
我收到的三个错误(如下所示)指向for循环中的数组用法,如上所示。
E0142:表达式必须具有指向对象的指针类型,但其类型为--〉arr_*temp_*decinmals[0[*var_temp_storage]
E0142:表达式必须具有指向对象的指针类型,但它的类型为--〉arr_*temp_*decinmals[1]*var_temp_storage]
E0020:未定义标识符“arr_decinmals”---〉&arr_decinmals[0][*var_temp_storage];
2条答案
按热度按时间ggazkfy81#
问题是你试图给数组赋值,这是不可能的。数组在C++中是不可赋值的
您可能要将值指派给数组的元素,例如:
但是,这也不起作用,因为您试图将long double类型的值赋给int类型的元素。您需要首先转换该值,例如:
或者,您可以将arr_temp_decimals数组的类型变更为long double类型,例如:
91zkwejq2#
代码段中有许多错误。
arr_temp_decimals
具有重定义未定义标识符“arr_decimals”
之前没有在函数中声明arr_decimals。
将arr_decimals放入decimal_conversion(arr_decimals ...)中。因此它将是
arr_converted_values是静态二维数组。请考虑将函数参数
int* arr_converted_values
更改为int arr_converted_values[][7]
。指针地址不能像
arr_converted_values[0][var_temp_storage]
一样使用。请考虑使用std::vector。