如何访问动态向量的元素?

时间:2019-04-27 04:36:17

标签: c for-loop pointers vector malloc

我想通过函数从矩阵移动到动态矢量。然后,要验证一切正常,我想打印矢量元素。

功能:

    float **v;
    float ** matrix_to_vector(const float m[][2],size_t n){
    v = (float **)malloc(n * sizeof(float*));
        for(i=0;i<n;i++){
        v[i] = (float *)malloc(n * sizeof(float)); 
    for(j=0;j<MAX_COLS;j++){
        *(v[i]) = m[i][j];
    }
}
return v;
}

On main():
float ** vector;
vector = matriz_a_vector(m,cantidad);

for(i=0;i<cantidad;i++){
    for(j=0;j<MAX_COLS;j++){
        printf("%f\t",*(vector[i]));
    }
    printf("\n");
}

我的问题是我总是保留M [I] [1]元素,因为当循环完成时,它总是在v [I]中保持值。当我打印矢量时,我只打印M [I] [1]的值,因为它是保留变量的值。如何获取所有元素并将其全部打印出来?

1 个答案:

答案 0 :(得分:0)

已解决。一旦在第一个请求中为v [i]请求了内存,然后它将Matrix值复制到创建的向量中。然后我执行了一个功能来将Vector分开打印。

for(i=0;i<n;i++){
        for(j=0;j<MAX_COLS;j++){
            v[i][j] = m[i][j];  
        }
    }