"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C/C++에서 가변 배열을 어떻게 구현할 수 있나요?

C/C++에서 가변 배열을 어떻게 구현할 수 있나요?

2024년 11월 17일에 게시됨
검색:744

How Can We Implement Jagged Arrays in C/C  ?

C/C의 가변 배열 이해

행의 길이가 다양할 수 있는 가변 배열 개념은 직접 지원되지 않습니다. 표준 C/C에는 유사한 기능을 달성하는 기술이 있습니다.

그림과 같이 C/C에서 들쭉날쭉한 배열을 선언하려고 하면 아래:

int jagged[][] = { {0,1}, {1,2,3} };

컴파일러 오류가 발생하여 지정 요구 사항을 강조합니다. 첫 번째 차원을 제외한 모든 차원의 경계입니다. 이러한 제한을 극복하기 위한 대체 접근 방식은 포인터 배열을 활용하는 것입니다.

포인터 배열을 사용하여 가변 배열 생성

C에서는 다음을 사용하여 가변 배열을 구현할 수 있습니다. 포인터 배열. 이 배열의 각 요소는 동적으로 할당된 하위 배열을 가리키며, 각 하위 배열은 고유한 다양한 길이를 갖습니다.

예:

int *jagged[5];

// Assign memory to each subarray
jagged[0] = malloc(sizeof(int) * 10);
jagged[1] = malloc(sizeof(int) * 3);

// Accessing elements
*jagged[0] = 0;
*(jagged[0]   1) = 1;

*jagged[1] = 1;
*(jagged[1]   1) = 2;
*(jagged[1]   2) = 3;

// Free memory after use
free(jagged[0]);
free(jagged[1]);

이 방법을 사용하면 다양한 크기의 행이 있는 배열을 생성하여 들쭉날쭉한 배열의 동작을 시뮬레이션할 수 있습니다. 메모리 누수를 방지하려면 각 하위 배열의 메모리를 동적으로 할당하고 수동으로 해제해야 한다는 점에 유의하는 것이 중요합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3