2009. 4. 29. 11:59
Flexible array member
2009. 4. 29. 11:59 in 프로그래밍 세계/Language Part 1 C/C++
표준(c90/c95)의 엄격한 해석에 따라 유용하게 사용할 수 있는 편범이 올바르지 않은 것으로 결론나자.
C99는 해당 편법을 정당하게 지원할 수 있는 flexible array member라는 기술을 새로 추가하였다.
즉 배열이 구조체나 공용체의 마지막 요소인 경우에 한해 선언 시에 그 크기를 명시하지 않고
나중에 할당받을 수 있도록 배려한 것이다. - 출처 : C언어 펀더멘탈 -
#include <stdio.h>
#include "stdlib.h"
struct A {
int a;
int b[];
};
int main()
{
const int N = 10;
int i;
struct A* p = (A*)malloc(sizeof(struct A) + sizeof(int) * (N - 1));
p->a = 100;
for (i = 0; i < N; i++)
{
p->b[i] = i;
}
printf("%d %d %d\n", p->a, p->b[0], p->b[N-1]);
for( int loop = 0 ; loop < N + 1 ; loop++ )
{
printf("%d %d\n", p->a, p->b[loop]);
}
system("pause");
//free(p);
return 0;
}