C와 C의 배열 할당
C와 C는 구조체 내에서 멤버별 배열 할당을 허용하지만 일반적으로는 그렇지 않습니다. 이 동작은 언어의 역사적 진화의 결과입니다.
처음에 C의 배열은 "요리된 배열"이라고 알려진 메모리의 포인터로 모델링되었습니다. 구조가 도입되었을 때 구조 내의 배열은 메모리 안전성을 보장하기 위해 다르게 처리되었습니다. 이를 통해 기존 코드와의 호환성을 손상시키지 않고 구조체 내에서 멤버별로 배열을 할당할 수 있었습니다.
반대로, C의 원래 디자인에서는 구조체 외부의 배열 할당이 지원되지 않았습니다. 이는 포인터 리베이스에 대한 우려와 함수 매개변수로 선언된 배열에 대한 크기 정보 부족 때문이었습니다. 버그 및 호환성 문제 발생을 방지하기 위해 memcpy를 사용한 명시적 할당이 선호되었습니다.
그러나 Luther Blissett가 언급한 것처럼 구조 할당에 관한 C 사양에서는 포함된 배열의 멤버별 할당을 명시적으로 허용합니다. 이는 디자인의 의도하지 않은 부작용이었지만 기존 패턴을 깨지 않고 구조체 내에서 데이터 복사를 용이하게 하는 방법으로 수용되었습니다.
따라서 일반적으로 지원되지 않는 구조체 내 배열의 멤버별 할당 지원은 C의 초기 디자인 결정과 그에 따른 언어의 진화의 유산으로 인해 구조 내에 내장된 배열과 독립적으로 사용되는 배열이 구분됩니다.
위 내용은 C 및 C에서는 배열을 직접 할당할 수 없지만 구조체 내에서는 할당할 수 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!