函数中的参数
问题描述:
我有这个函数计算x [0],x [1],x [2],其中n是行,L是下矩阵(0在顶部对角线上),x是未知数,b解决方案。问题是,他们问我从主调用它,并且不知道如何将参数传递给函数,我离开这里:函数中的参数
void resTinf (int n, double **L, double *x, double *b){
int i, k;
x[0]=b[0];
for (i = 1, i<n, i++){
x[i]=b[i];
for (k = 0, k<i, k++){
x[i] = x[i]-L[i][k]*x[k];
}
}
x[2] = b[2] - L[2][0]*x[0]-L[2][1]*x[1];
printf(x[1], x[2], x[3]);
}
主:
int n = 3;
double **a, *v, *u;
scanf ("% le " , &v[0 ]);
scanf ("% le " , &v[1 ]);
scanf ("% le " , &v[2 ]);
scanf ("% le " , &a[1][ 0]);
scanf ("% le " , &a[2 ][ 0]);
scanf ("% le " , &a[2 ][ 1 ]);
答
首先,需要为动态数组分配内存,或者只需在函数的开头创建静态数组。 喜欢的是:
#include <stdlib.h>
主:
int n = 3;
double **a, *v, *u;
v = (double*)malloc(n * sizeof(double));
u = (double*)malloc(n * sizeof(double));
a = (double**)malloc(n * sizeof(double *));
for(int i = 0; i < n; i++){
a[i] = (double*)malloc(n * sizeof(double));
}
scanf ("% le " , &v[0 ]);
scanf ("% le " , &v[1 ]);
scanf ("% le " , &v[2 ]);
scanf ("% le " , &a[1][ 0]);
scanf ("% le " , &a[2 ][ 0]);
scanf ("% le " , &a[2 ][ 1 ]);
或
int n = 3;
double a[n][n], v[n], u[n];
scanf ("% le " , &v[0 ]);
scanf ("% le " , &v[1 ]);
scanf ("% le " , &v[2 ]);
scanf ("% le " , &a[1][ 0]);
scanf ("% le " , &a[2 ][ 0]);
scanf ("% le " , &a[2 ][ 1 ]);
那么对于初学者[数组的数组是不一样的东西作为一个指针的指针(HTTPS: //stackoverflow.com/questions/18440205/casting-void-to-2d-array-of-int-c/18440456#18440456)。没有更多的信息和[最小,完整和可验证的示例](http://stackoverflow.com/help/mcve),真的很难说别的。请花一些时间[阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask)。 –
我真的不明白,当你执行它时,你需要使用你提供给你的程序的参数:'./matrix n param1 param2 param3'或者只是你主函数中的一些变量? – pierreafranck
我在我的主要功能:int n = 3; \t \t double ** a,* v,* u; \t \t \t \t scanf的( “%乐”,&V [0]); \t scanf(“%le”,&v [1]); \t scanf(“%le”,&v [2]); \t \t \t \t scanf(“%le”,&a [1] [0]); \t scanf(“%le”,&a [2] [0]); \t scanf(“%le”,&a [2] [1]); – Snarky