C99의 sizeof와 가변길이 배열
C99 에서는 배열의 사이즈 지정에 변수를 사용할 수 있다.
void test1( int n )
{
int fixed_array[10];
int varlen_array[n];
printf( "sizeof(fixed_array)==%ld\n", sizeof(fixed_array) );
printf( "sizeof(varlen_array)==%ld\n", sizeof(varlen_array) );
}
test1(10); 로 인수를 10으로 해서 호출하면 아래와 같다.
sizeof(fixed_array)==40 sizeof(varlen_array)==40
그러나 보통의 배열과는 다르므로 컴파일 시에 szieof로 값을 알 수 없다.
void test2( int n )
{
int fixed_array[10];
int varlen_array[n];
// sizeof(fixed_array)는 enum의 값으로 사용할 수 있다.
enum{ FIXED_ARRAY_SIZE=sizeof(fixed_array) };
// sizeof(varlen_array)는 enum의 값으로 사용할 수 없다. 컴파일 에러
enum{ VARLEN_ARRAY_SIZE=sizeof(varlen_array) };
}
참고 http://qiita.com/Nabetani/items/a2ecdba9af0add723170
이 글은 2017-04-12에 작성되었습니다.