IT 프로그래밍

[따배시] 4.2 sizeof 연산자 강의 노트

기술1 2024. 1. 5. 09:56
반응형

배열

동적할당

string 

 

등이 나온 것이다.

이 강의는 처음 접하기에 조금 어려워서 계속해서 반복해서 봐야 할 것 같다.

 

#include <stdio.h>
#include <stdlib.h>

struct MyStruct
{
	int i;
	float f;
};
int main(void)
{
	int a = 0;
	unsigned int int_size1 = sizeof a;
	unsigned int int_size2 = sizeof(int);
	unsigned int int_size3 = sizeof(a);

	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);

	// size of arrays 배열
	int int_arr[30]; //int type 공간 30개를 사용할게요
	int* int_ptr = NULL; //포인터 주소를 적을 수 있는 종이만 들고 있는 것이고
	int_ptr = (int*)malloc(sizeof(int) * 30); //이 과정을 거져서 이 메모리 공간들을 대표하는 메모리 주소 받아오기

	printf("Size of array = %zu bytes\n", sizeof(int_arr)); //120이 나온다
	printf("Size of pointer = %zu bytes\n", sizeof(int_ptr)); //4 바이트가 나온다. (메모지)주소를 적는 공간의 사이즈가 나온다

	
	//size of character array

	char c = 'a';
	char string[10];

	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);

	printf("%zu\n", sizeof(struct MyStruct));


	return 0;
}

출력결과

 

이해한 내용을 바탕으로는 

int.arr[30]같은 경우 사용할 때만 주소로 생각하기 때문에 선언하는 순간 30개로 인식하면서 compile에서 수행되기 때문에 해당 내용이 정상적으로 printf되는 것을 볼 수있다. 30 * 4 해서120으로)

 

하지만 아래의 int_ptr 포인터 같은 경우는 아직 지정이 되지 않았기 때문에 compile에서는 해당 내용이 어떤 값이 들어갈지 알 수 없는 것으로 인식해서 값을 인식하지 못한다고 했다...

 

이 부분은 나중에 다시 복습해야겠다. 

 

 

반응형