函数中的参数

问题描述:

我有这个函数计算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 ]); 
+4

那么对于初学者[数组的数组是不一样的东西作为一个指针的指针(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)。 –

+0

我真的不明白,当你执行它时,你需要使用你提供给你的程序的参数:'./matrix n param1 param2 param3'或者只是你主函数中的一些变量? – pierreafranck

+0

我在我的主要功能: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

首先,需要为动态数组分配内存,或者只需在函数的开头创建静态数组。 喜欢的是:

#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 ]);