У меня есть двумерный массив NxN, реализованный в виде одномерного массива с использованием A [N * i + j].Я хочу сделать ссылки на столбцы массива и иметь возможность передавать их в функции как обычные векторы столбцов.Вы можете увидеть пример ниже для N = 3.Функция возвращает только квадрат вектора, переданного ей:
#include <stdio.h>
int func(int* vec[3]){
int result=0;
for(int i=0;i<3;i++){
result+=(*vec[i])*(*vec[i]);
printf("vec[%d]=%d\n",i,*vec[i]);
}
return result;
}
void main(){
int A[]={0,1,2,3,4,5,6,7,8};
int *a[3][3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
a[j][i]=&A[3*i+j];
}
}
for(int i=0;i<3;i++){
printf("vector %d\n",i);
for(int j=0;j<3;j++){
printf("%d\n",*a[i][j]);
}
}
printf("%d\n",func(a[0]));
}
Это работает, но проблема в том, что функция работает только для аргументов типа int* vec[3]
.Что мне действительно хотелось бы, так это иметь функцию, принимающую аргумент типа int vec[3]
, но я запутался в том, как мне затем передать вектор указателей в качестве вектора значений, на которые указывают элементы вектора.