4.2 size演算子
3264 ワード
1. sizeof basic types
sizeof関数はサイズを表すので正の値です.-->unsignedを使用!
sizeof関数を表す方法は3つあります.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 0;
unsigned int int_size1 = sizeof a; // 1. 선언된 변수 이름 넣기
unsigned int int_size2 = sizeof(int); // 2. 자료형 직접 입력. 괄호 필수! int는 연산자!
unsigned int int_size3 = sizeof(a); // 3. 괄호 안에 변수 이름 넣기
size tの仕事は上のunsigned intと同じです.しかし、他のシステムはsizeofの範囲を表すためにunsigned intを使用していない可能性があります.すなわち,移植性を高めるためにsize tを用いる.
size_t int_size4 = sizeof(a);
size_t float_size = sizeof(float);
printf("Size of int type is %u bytes.\n", int_size1); // unsigned 에 대한 type specifier = u
printf("Size of int type is %zu bytes.\n", int_size4); // size_t 에 대한 type specifier = zu
printf("Size of int type is %zu bytes.\n", float_size);
}
2. sizeof arrays
動的割当て.これは難しい内容で、後でさらに説明するかもしれません.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int int_arr[30]; // int_arr[0] = 1024; ...
int *int_ptr = NULL;
int_ptr = (int*)malloc(sizeof(int) * 30); //int_ptr[0] = 1024; ...
// int_ptr 은 할당된 메모리 중 대표 주소를 찍어주는 것이다.
printf("Size of array = %zu bytes\n", sizeof(int_arr)); // 30 개의 공간이므로 120 byte
printf("Size of pointer = %zu bytes\n", sizeof(int_ptr)); // 120 byte를 대표 주소 --> 4 byte
}
3. sizeof character array
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c = 'a'; // 정수 97 로 바뀌어 저장.
char string[10]; // maximally 9 character '\0' (null character)
//string은 마지막에 마침표 역할을 하는 null character 필수! --> 실질적으로 9자리 밖에 저장이 안 된다.
size_t char_size = sizeof(char);
size_t str_size = sizeof(string);
printf("Size of char type is %zu bytes.\n", char_size); // 1
printf("Size of char type is %zu bytes.\n", str_size); // 10
}
4. sizeof structure
構造体については後述する
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> // malloc() -> memory allocation. 메모리 할당.
struct Mystruct // 구조체
{
int i;
float f;
};
int main()
{
printf("%zu\n", sizeof(struct Mystruct)); // 8 = 4(int) + 4(float)
return 0;
}
Reference
この問題について(4.2 size演算子), 我々は、より多くの情報をここで見つけました https://velog.io/@a1rhun/4.2-sizeof-연산자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol