gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:13:47 24 4
gpt4 key购买 nike

这段代码应该在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com