2014-05-15 4 views
2

내 프로그램에서 함수를 통해 미리 초기화 된 2D 배열을 전달하려고합니다. 첫 번째 요소를 올바르게 가져오고 있지만 나머지는 지나가는 동안 0으로 초기화됩니다. 나는 왜이 문제가 발생하는지 알지 못한다. 배열을 전달하기 위해 포인터를 사용하고 싶지 않습니다. 포인터를 사용하지 않고 2D 배열을 전달할 수 있는지 확인하십시오. 여기 는 코드입니다 -C에서 포인터를 사용하지 않고 함수를 통해 2D 배열을 전달하는 방법

#include<stdio.h> 
#define MAX(a,b) (a>b)?a:b 

int kat(int S,int A[][S]) 
{ 
    int i,j,r[S]; 
    r[0] = A[0][0]; 
    j = 0; 
    for(i=1;i<S;i++) 
    { 
    r[i] = MAX(r[i-1] + A[i][j],r[i-1] + A[i][j+1]); 
    if (r[i-1] + A[i][j] < r[i-1] + A[i][j+1]) 
    j = j+1; 
    } 
    return r[S-1]; 
} 

int main() 
{ 
    int A[100][100],T,S,i,j,k,ans; 
    scanf("%d",&T); 
    while(T--) 
    { 
    i=0; 
    scanf("%d",&S); 
    for(k=1;k<=S;k++) 
    { 
     for(i;i<k;i++) 
     { 
     for(j=0;j<=i;j++) 
     { 
      scanf("%d",&A[i][j]); 
     } 
     } 
    } 
    ans = kat(S,A); 
    printf("%d\n",ans); 
    } 
} 

답변

2

문제는 컴파일러에게 거짓말을하는 것입니다 : 당신은 당신이 kat에 전달할 것 배열 S 변수입니다 int[][S]이라고 그것을 이야기하지만, 부동산에서 배열 int[][100]을 전달합니다. 여기서 100은 상수입니다.

이처럼 mainS를 읽고 후 배열 를 선언함으로써이 문제를 해결할 수 있습니다

scanf("%d",&S); 
int A[S][S]; 
관련 문제