c - 通过 void 函数传递多维数组

标签 c

这是代码:

#include <stdio.h>

int funk1()
{
int N=0;
float a;
FILE *f;
f=fopen("wyniki.txt", "r");
while(fscanf(f,"%f", &a)!=EOF)
{
    N++;
}
fclose(f);
return N;
}

void funk2(int N, float T[][N])
{
FILE *f;
f=fopen("wyniki.txt", "r");
float a;
int i=0;
while(fscanf(f,"%f", &a)!=EOF)
{
    T[i][0]=a;
    T[0][i]=a;

    printf("funk 2\n");
    printf("liczba = %f    i = %d \n", a, i);
    printf("%f   %f\n", T[i][0], T[0][i]);


    i++;
}
fclose(f);

}

main()
{
int N =  funk1();
float T[N][N];

funk2(N,T[][N]);

int i=0;
int j=0;

for(i=0;i<N;i++){
    for(j=0;j<N;j++){
        printf("|%f|\t",T[i][j]);
    }
    printf("\n");
    printf("|%f|\t", T[i][j]);
}

getch();
return 0;
}

问题仅出在 funk2 上。我想将矩阵 (T) 从 main 传递到 funk2,用它做一些事情,然后再把它还给 main。老实说,我不知道该怎么做,我只是试着弄乱它,但它不起作用。知道怎么做吗?我应该提供更多信息还是这就足够了?您也可以忽略 funk2 的第一个函数和前半部分。一切正常,我的问题只与传递二维数组有关。

这段代码的结果是错误的

    funk2(N,T[][N]);

(']' 标记前的预期表达式)。

在那里添加一个 N 结果

expected 'float (*)[(sizetype)(N)]' but argument is of type 'float'

最佳答案

[] 唯一有效的语法是在使用初始化程序或作为函数参数声明数组时。

如果要将数组传递给函数,只需传递它即可:

funk2(N,T);

你不需要调出数组的维度。编译器知道它是一个数组。

关于c - 通过 void 函数传递多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472384/

相关文章:

c - 使用 syscall() 链接 initramfs 中的 key 环

c - 来自远程服务的 PKCS#11 证书

C:这是类型转换的正确案例吗?

c - 加密/解密文件 libgcrypt

c - 循环 C 中 n 位的 2^n 状态,其中 n > 32

c - Windows 10 更新后 TreeView 控件显示空白并带有复选框

在 shell 中自定义完成

c - 如何编译适用于 ARM-Linux (IMX6UL) 的 BlueZ 应用程序?

c - OSX 与 Linux 上的 pselect() 行为有何不同?

根据其他结构成员创建结构