[英]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.