2009-08-12 2 views

답변

4

배열은 char* 배열의 배열이며 각 배열은 10char* 포인터를 저장합니다.

이것은 매개 변수가 참조가 아닌 함수로 전달할 때 pointer to an array of 10 char*으로 변환된다는 것을 의미합니다. 정확한 함수 파라미터 타입에 따라서 유래 Pet peeve이 항목에 대한 추가보기

int foo(char* (*hi)[10]) 
{ 
    ... 
} 

int main() 
{ 
    char* bar[10][10]; 
    return foo(bar); 
} 

이다.

0

이 참조의 개념을 소개하는 나쁜 시간이 될 것인가?

손을 떼고는, 나는 '&'이 호출 측에 필요할 것이라고 말하고 싶습니다. 즉, 이것은 위험한 게임입니다.

왜 이것을 할당하고 있습니까? 왜 스택에 있습니까? 왜 당신은 수신 함수에서 문자 ***로 그것을 타이핑하고 있습니까? 야곱

0

는 참조 벡터의 벡터를 사용하거나 부스트 : : multi_array를, 또는

int foo(char* hi[10][10]) 
{ 
} 

int main() 
{ 
    char* bar[10][10]; 
    return foo(bar); 
} 

을 시도합니다.

+0

정적 배열 크기를 foo에 사용하지 않는 것이 좋습니다. – CookieOfFortune

+0

@CookieOfFortune, 첫 번째 "10"은 컴파일러에서 준수하지 않습니다. 매개 변수는 내 대답과 동일한 유형입니다. –

1

배열의 크기가 변경되지 않으면 함수의 배열에 대한 참조를 사용하는 것이 좋습니다. 그것의 더 안전하고 청결한. 예 :

int foo(char* (&hi)[10][10]) 
{ 
int return_val = 0; 
//do something 
//hi[5][5] = 0; 
return return_val; 
} 

int main() 
{ 
    char* bar[10][10]; 
    return foo(bar); 
}