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