繁体   English   中英

通过void函数传递多维数组

[英]Passing multidimensional arrays by void functions

这是代码:

#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);

您无需调出数组的尺寸。 编译器知道它是一个数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM