我有一個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]
的參數,但我很困惑我該如何將指針向量作爲向量元素指向的值的向量傳遞。