【发布时间】:2012-03-26 23:18:52
【问题描述】:
我有一个使用 A[N*i+j] 实现为一维数组的 NxN 二维数组。我想引用数组的列,并能够将它们作为常规列向量传递给函数。您可以在下面看到 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] 类型的参数,但我对如何将指针向量作为向量元素指向的值的向量传递感到困惑。
【问题讨论】: