I가 내가 인스턴스를 생성하고 유연한 배열 구성원과 구조를 초기화하는 방법에 대한 몇 가지 기본적인 인터넷 검색을 수행 (그러나 실패) 한어떻게 유연한 배열 구성원과 구조를 초기화
typedef struct _person {
int age;
char sex;
char name[];
}person;
다음과 같은 구조 malloc()
을 사용하지 않습니다.
: 우리 struct a
의 인스턴스를 생성하고, 상술 한 바와 같이
struct a p1 = {10, 'm'};
같은하지만 유연한 배열 구조 (같은 _person
위한 초기화 수
struct a {
int age;
int sex;
};
같은 통상 구조물) 인스턴스를 만들고 초기화하는 방법은 보통
structures
에 대해 어떻게 할 수 있습니까?
심지어 가능합니까? 그렇다면 초기화하는 동안 배열 크기를 전달하고 초기화 할 실제 값은 어떻게 전달합니까?
(또는)
인가 그것을 참 C99 명세서에서 언급 malloc()
사용하는 유일한 방법은가요 배열 구성을 만드는 것을 - 6.7.2.1 Structure and union specifiers - point #17
을?!
구조체는 컴파일 시간 크기를 가질 수 없습니다. – Anycorn
@Anycorn : 가변 배열 멤버가있는 구조체는 컴파일 시간 크기를가집니다. –
GCC는 당신이'struct {size_t len; int data []; } x = {4, {1, 2, 3, 4}}; 그러면 작동하지만 휴대용이 아닙니다. 여러분의 플랫폼의 버전 인'alloca'를 항상 더 포팅 가능한 솔루션으로 들여다 볼 수는 있지만, 모두 똑같은 방식으로 동작하고 동일한 구현 방식을 유지해야합니다. –