c - 我在使用 malloc() 将多维变量数组传递给 C 中的函数时遇到问题

标签 c pointers dynamic multidimensional-array malloc

这段代码应该在 main 中创建一个数组,然后打印它,但每次运行它时,我只会得到一个全 0 的数组

#include <stdio.h>
#include <stdlib.h>

void print(float **A, int w, int h){
  int i, j;

  A = (float*) malloc(w*h*sizeof(float));

  for (i=0;i<h;i++){
    A[i] = (float*) malloc(w*sizeof(float));
  }

  for (i=0; i<h; i++){
    for(j=0; j<w; j++){
      printf("%f ", A[i][j]);
    }

    printf("\n");
  }
}

int main(void) {

    int i;
    int x_dimension=3;
    int y_dimension=2;
    float arr [3][2]={};
    arr[0][0]=16.2;

    print(arr,x_dimension,y_dimension);

    return 0;
}

最佳答案

您正在 print 函数中重新分配它,这应该可以工作:

#include <stdio.h>
#include <stdlib.h>

void print(float * A,int h, int w){
  int i,j;
  for (i=0;i<h;i++){
    for(j=0;j<w;j++){
      printf("%f ",A[i * w + j]);
    }
    printf("\n");
  }
}

int main(void) {
    int i;
    const int x_dimension=3;
    const int y_dimension=2;
    float arr[x_dimension][y_dimension];
    arr[0][0]=16.2;
    print(arr,x_dimension,y_dimension);
    return 0;
}

请注意,我还在 print 函数中颠倒了 wh 参数。

关于c - 我在使用 malloc() 将多维变量数组传递给 C 中的函数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22186294/

相关文章:

c - 将特定结构传递给 C 中的函数

wpf - Combobox.ItemsSource 上的 StaticResource 与 DynamicResource 行为

c++ - 头文件包含静态分析工具?

c++ - 不完整类型 --> 无法从我的对象访问指针值

c - 是否可以在 C 程序中包含 shell 脚本

c++ - const c++ 的正确使用

vue.js - Vuejs,具有可编辑字段和双向数据绑定(bind)的动态 b 表

javascript - 并行 promise 链,其间具有顺序动态内容

c - 如何合并排序结构数组

c - 斐波那契数列代码