2011-05-01 4 views
1

2 차원 배열을 함수에 전달하는 방법은 무엇입니까?
전달하면 Visual Studio 디버거에서 일차원 배열로 표시됩니다. 문제는 sel_col [i]를 색인 할 때 다음 단어 대신 다음 문자를 가져 오는 것입니다. 최초의 size 식별자를 제거 : 여기 비 동적 2 차원 배열을 C에서 함수로 전달?

내 함수 프로토 타입입니다 :

void print_row(char sel_col[MAX_IDENT_LEN][MAX_IDENT_LEN]); 

그리고 여기 내 2 차원 배열의 정의는, 나는 그것을 호출 여기서

char sel_col[MAX_NUM_COL][MAX_IDENT_LEN]; 
print_row(sel_col); 

솔루션 1 . 일하지 않았어.

void print_row(char sel_col[][MAX_IDENT_LEN]); 

해결책 2 : 함수에 참조 패스 그것을. 일하지 않았어.

print_row(&sel_col); 

해결 방법 3 :를 사용하여 이중 포인터. 나는이 길을 가고 싶지 않다. 왜냐하면 대부분의 코드를 다시 작성하기 때문이다.

+0

편집 됨. 미안합니다. – chustar

+0

이 질문에 대한 태그가 지정되지 않은 C++는 C에 있습니다. – Puppy

답변

1

C에서 2 차원 배열은 1 차원 배열처럼 보입니다. char[3][3]은 실제로는 9 개의 요소 만있는 단일 차원 배열이며 컴파일러는 더 작은 두 개의 인덱스를 하나의 큰 인덱스로 바꾸는 수학을 수행합니다. 함수 프로토 타입이 올바른 것처럼 보입니다. 문제는 무엇 이었습니까? 컴파일러 오류가 발생 했습니까?

+0

문제는 내가 sel_col [i]를 인덱싱 할 때 다음 단어 대신 다음 문자를 가져 오는 것입니다. – chustar

+0

'char * array [SIZE]'를 시도해 보거나 전달하려는 배열의 정의를 보여줄 수 있습니다. –

+0

@chustar이 작은 프로그램은 저에게 도움이됩니다 : http://codepad.org/gdcd1WKR 그것은'abc def ghi ...'를 별도의 줄에 출력합니다. –

관련 문제