设计函数sum_column( int A[E1(n)][E2(n)], int j ),E1(n)和E2(n)分别为用宏定义的行数和列数,j为列号。在该函数中,设计指针ptr=&A[0][j],通过*ptr及ptr=ptr+E2(n)访问第j列元素,从而求得第j列元素的和。在主函数中定义该矩阵,指定所求和的列号j,然后调用函数sum_column( ),返回第j列元素的和。
代码实现
#define n 1
#define E1(n) 3*n
#define E2(n) 5*n
int sum_column ( int A[E1(n)][E2(n)], int j )
{
int i;
int result=0;
int *ptr=&A[0][j];
for( i=0; i<E1(n); i++ ) //求出第j列元素的和
{
result+ = *ptr;
ptr+ = E2(n);
}
return result;
}
void main ()
{
int A[E1(n)][E2(n)];
int i, j, sumcol;
for ( i=0; i<E1(n); i++ ) //矩阵赋初值
for ( j=0; j<E2(n); j++ )
A[i][j] = i+j+3;
j=4;
sumcol = sum_column (A, j) ;
}
运行结果
当j=3时,sumcol=21;当j=4时,sumcol=24。