首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中用二维数组中的一行初始化一个变量?

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

Stack Overflow用户
提问于 2013-05-20 03:56:24
回答 1查看 121关注 0票数 0

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

代码语言:javascript
复制
    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];
    }
EN

回答 1

Stack Overflow用户

发布于 2013-05-20 06:41:04

答案取决于对您的问题的解释:“使用q中的行i初始化一维数组p,而不使用for循环”-因为您的代码不会使用for循环使用Q中的行初始化p

  • for循环可以由while循环甚至递归替换。
  • 如果您更改pQ的类型以使它们兼容(例如,两个float),则可以使用D12将D13复制到D14;我不确定这是否对您有帮助,因为您的代码中已经有一些D15(有两个错误,因此无法工作)。H216
  • 您可以删除D18的内存分配,并使其指向Q中的一行;这不需要循环。例如:

-

代码语言:javascript
复制
void simVarDiscr(int m, int *x, float *p) // changed from double to float
{
    ... // No change in code
}

int LantMarkov(int m,double *pi0,float **Q)
{
    ...
    for(k=0;k<n;k++){
        p = Q[j];
        // The following code changes p and j'th row of Q in the same manner
        ...
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16638850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档