#c #vector #matrix #dynamic-arrays
#c #вектор #матрица #dynamic-arrays
Вопрос:
int *column_to_row(int **a, int rows, int column_index)
{
// a is a the matrix,rows are the number of rows in the matrix
//column_index is the chosen column of the matrix to be turned into a vector
int i;
int *b=malloc(rows*sizeof(int));// b will be my returned vector
if(b==NULL)
{
exit(EXIT_FAILURE);
}
for(i=0;i<rows;i )
{
b[i]=a[i][column_index];
}
return b;
}
Я продолжаю получать эту ошибку C2040:
error C2040: 'column_to_row' : 'int *(int **,int,int,int)' differs in levels of indirection from 'int ()'
Что я делаю не так?
Комментарии:
1. Можете ли вы показать код, который вызывает эту функцию?
2. В самом коде нет ничего (синтаксически) неправильного. Вы пытаетесь вызвать функцию до ее объявления (т. Е. выше в том же модуле компиляции / файле)?
3. Ваша ошибка показывает, что 4 параметра передаются в любой строке, в которой вы вызываете column_to_row. Можете ли вы показать фактический вызов? сам код функции кажется прекрасным.
4. у @MByD его еще нет
5. Кроме того (но это всего лишь некоторые незначительные вещи, не связанные с реальной проблемой): вы не должны
exit()
использовать вспомогательную функцию. Вместо этого вернитеNULL
, чтобы вызывающий мог действовать соответствующим образом.
Ответ №1:
функция работает правильно.
скорее всего, он жалуется, потому что прототип отсутствует.
int *(int **,int,int,int)
похоже, вызов функции не согласуется с объявлением, потому что это должно быть int*(int **, int ,int)