반응형
배열
동적할당
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에서는 해당 내용이 어떤 값이 들어갈지 알 수 없는 것으로 인식해서 값을 인식하지 못한다고 했다...
이 부분은 나중에 다시 복습해야겠다.
반응형
'IT 프로그래밍' 카테고리의 다른 글
[따배시] 4.7 printf 함수의 변환 지정자들 (0) | 2024.01.05 |
---|---|
[따배시] 4.5 기호적 상수와 전처리기 (0) | 2024.01.05 |
[따배시] 4.4 strlen() 함수 (0) | 2024.01.05 |
[따배시] 4.3 문자열이 메모리에 저장되는 구조 (0) | 2024.01.05 |
[따배시] 4.1 문자열 입출력하기 (0) | 2024.01.05 |