簡體   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