본문 바로가기

개발공부/C

sizeof 연산자

int main()
{
	int a = 0;
    unsigned int int_size1 = sizeof a;
    unsigned int int_size2 = sizeof(int);
    unsigned int int_size3 = sizeof(a);
    
    
    //portable type이식성을 높이기 위함. 오픈소스에서 많이 쓰는 추세이다.
    size_t int_size4 = sizeof(a);
    size_t float_size = sizeof(float);
    
    printf("Size of int type is %u bytes.\n", int_size1);
    printf("Size of int type is %zu bytes.\n", int_size4);
    printf("Size of float type is %zu bytes.\n", float_size);
}
int int_arr[30];		//int_arr[0] =1024;...
int* int_ptr = NULL;
int_ptr = (int*)malloc(sizeof(int) * 30);		//int_ptr[0] =1024;...

printf("size of array = %zu bytes\n", sizeof(int_arr));
printf("size of pointer = %zu bytes\n", sizeof(int_ptr));
size of array = 120bytes
size of pointer = 4bytes

array는 컴파일때 알 수 있지만 pointer는 런타임때 결정된다.

char c = 'a';
char string[10];		//maximally 9 character + '/0' (null character)

size_t char_size = sizeof(char);
size_t str_size = sizeof(string);

printf("size of char type is %zu bytes.\n", char_size);
printf("size of string type is %zu bytes.\n", str_size);

null character가 문자열에서 마침표의 역할을 하므로 최대로 쓸수 있는 문자열은 9칸이다.

struct MyStruct
{
	int i;
    float f;
};

int main()
{
    printf("%zu\n", sizeof(struct MyStruct));
    return 0;
}
8

int + float = 8이다.

'개발공부 > C' 카테고리의 다른 글

printf()함수  (0) 2019.10.15
기호적상수와 전처리기  (0) 2019.10.15
C언어 문자열 출력(직관적)  (0) 2019.10.15
부동소수점의 한계  (0) 2019.10.15
고정너비정수  (0) 2019.10.15