多维数组作为函数参数的形式
int *matvec1(int **A, int *x, int n){ int i,j; int *y = Malloc(n * sizeof(int)); for(i=0; i<n ;i++) y[i] = 0; for(i=0; i<n; i++) for(j=0; j<n; j++){ y[i] += A[i][j] * x[j]; } return y; }
int *matvec2(int A[][3], int *x, int n){ int i,j; int *y = Malloc(n * sizeof(int)); for(i=0; i<n ;i++) y[i] = 0; for(i=0; i<n; i++) for(j=0; j<n; j++){ y[i] += A[i][j] * x[j]; } return y; } int *matvec3(int (*A)[3], int *x, int n){ int i,j; int *y = Malloc(n * sizeof(int)); for(i=0; i<n ;i++) y[i] = 0; for(i=0; i<n; i++) for(j=0; j<n; j++){ y[i] += A[i][j] * x[j]; } return y; }
int *matvec4(int *A, int *x, int n){ int i,j; int *y = Malloc(n * sizeof(int)); for(i=0; i<n ;i++) y[i] = 0; for(i=0; i<n; i++) for(j=0; j<n; j++){ y[i] += A[i*n + j] * x[j]; } return y; } int main(){ int A[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; int x[3] = {2,3,4}; int i, n = 3; int *y = NULL; //y = matvec3(A, x, n); y = matvec4(&A[0][0], x, 3); printf("Ax = ["); for(i=0; i<n ;i++) printf("%d," , y[i]); printf("]\n"); free(y); return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。