如何用C中的二维数组中的一行初始化变量?

时间:2013-05-19 19:56:24

标签: c

有人可以帮我解决这个问题:我有一行i,一维数组p和二维数组(矩阵)Q. 所以,问题是我必须使用Q中的第i行初始化一维数组p而不使用for循环。我怎么能这样做?

    void simVarDiscr(int m, int *x, double *p){//m is the number of elements of x and p
    int i;
    for(i=0;i<m;i++){
        x[i]=i;
        init_genrand(254);//is a function from Mersenne-Twister algorithm
        p[i]=genrand_int32()%m;
    }
}
int LantMarkov(int m,double *pi0,float **Q){
    int *s,k,j;double *p;
    s=(int *)malloc(n*sizeof(int));
    p=(double *)calloc(m,sizeof(double));
    simVarDiscr(m,s,pi0);
    j=s[0];
    for(k=0;k<n;k++){
        memcpy(p, Q[j], m);
        simVarDiscr(m,s,p);
        j=s[k];
    }

1 个答案:

答案 0 :(得分:0)

答案取决于对您的问题的解释:“使用Q中的第i行初始化一维数组p而不使用for循环” - 因为您的代码没有使用来自{{的行初始化p 1}}使用Q循环。

  • for循环可以替换为for循环甚至是递归。

  • 如果您更改whilep的类型以使其兼容(例如Q),则可以使用float从{复制memcpy {1}} Q;我不确定这会对您有所帮助,因为您的代码中已经有一些p(有2个错误,因此无效)。

  • 您可以删除memcpy的内存分配,并将其指向p中的一行;这不需要循环。例如:

-

Q