设计函数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。