Я должен написать программу, которая умножает два вектора для моего класса кодирования, и типы аргументов реализованных функций устанавливаются нашим учителем.
Не могу понять, как передать векторы, являющиеся одномерными массивами, в виде двойных указателей на одну из реализованных функций.
Я попытался использовать адрес-оператор, так как я хочу указать на адрес начала массива, где функция должна зарезервировать пространство памяти для массива. Но компилятор всегда говорит мне
incompatible pointer type, expected int **
и он не работает без оператора.
//all functions set by worksheet
int array_create(int **v, int n);//function with double pointer argument
void array_init(int *v, int n);
int mult_array(int *x, int *y, int n);
int main(void)
{
int i, j;
int x[10];
int y[10];
srand(time(NULL));
array_create(x, 7); // see here
array_create(y, 7); // see here
array_init(x, 7);
array_init(y, 7);
printf("\nResult: %i", mult_array(x, y, 7));
array_destroy(x);
array_destroy(y);
return 0;
}
int array_create(int **v, int n)
{
v = malloc(n * sizeof(int));
if(!v){
return 0;
}
return 1;
}