프로그래밍에서 배열은 데이터 모음을 저장하는 데 필수적인 데이터 구조입니다. 다차원 배열을 다룰 때는 요소에 대한 작업을 수행하기 위해 함수에 배열을 전달하는 방법을 이해하는 것이 중요합니다.
다음 C 코드를 고려하세요.
void print(int *arr[], int s1, int s2) { // ... } int main() { int a[4][4] = {{0}}; print(a, 4, 4); }
이 코드는 전달하는 것을 목표로 합니다. int[4][4] 유형의 다차원 배열 a를 정수에 대한 포인터 배열(int **)을 기대하는 함수로 인쇄합니다. 놀랍게도 이 코드는 C에서는 성공적으로 컴파일되지만 C에서는 컴파일되지 않습니다.
C에서는 오류가 명확합니다.
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
이 오류는 다음을 의미합니다. C에서는 다차원 배열(int[4][4])에서 정수에 대한 포인터 배열(int **)로의 암시적 변환을 허용하지 않습니다. 이는 이 두 데이터 유형이 구조와 해석이 근본적으로 다르기 때문입니다.
이 오류를 수정하려면 C에서 "배열 주소 붕괴"라는 기술을 사용할 수 있습니다. 또는 다차원 배열을 C의 포인터 배열로 명시적으로 변환합니다. .
씨:
int main() { int a[4][4] = {{0}}; print(a, 4); // Pass the base address of the multidimensional array (array address decay) } void print(int *arr, int s) { // ... }
씨 :
int main() { int a[4][4] = {{0}}; print(a, 4, 4); // Explicit conversion to an array of pointers } void print(int **arr, int s1, int s2) { // ... }
위 내용은 다차원 배열을 C 및 C의 함수에 어떻게 전달할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!