設計函數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。