5:40 질문이요!
#define NUM_DAYS 5
int main(void)
{
int a = 5;
int b[NUM_DAYS];
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(b));
return 0;
}
여기서 제가 생각했던것은 a가 int형 이므로 4byte를 가질거라고 생각했고, b도 마찬자기로 int형이므로 4byte를 가질거라고 생각해서
4
4 가 출력될거라고 생각했습니다.
그런데 출력값은
4
20이 나왔습니다. 왜그런건가요?
선생님께서 5:40 쯤에 선생님께선 '타입의크기 곱하기 레터럴상수'를 해주시는데,
그러면 printf("%d\n", sizeof(a)); 이것도 '타입의크기 곱하기 레터럴 상수'로 해줘야되는거 아닌가요? 출력값이 20이 나와야되는것 아닌가요?
답변 3
2
"printf("%d\n", sizeof(a)); 이것도 '타입의크기 곱하기 레터럴 상수'로 해줘야되는거 아닌가요?"
이건 그냥 코드 그대로 a 라는 변수의 크기를 출력해보는 코드일뿐입니다. 굳이 타입의크기 곱하기 레터럴 상수를 해줄 이유는 없습니다.
배열은 같은 자료형의 데이터가 연속적으로, 즉 이웃 사이로 몰아 넣을 수 있는 고정된 크기의 자료구조입니다. b 는 int 가 5 개 저장될 수 있는 "배열"이기 때문에 4 * 5 = 20 (타입의크기 곱하기 레터럴 상수)이 되는 것이구요!
제가 커리큘럼을 찾아보니 질문자님께서 들으신 이 강의가 배열을 처음으로 접하게 되는 부분인것 같네요. 배열은 챕터 10 에서 아주 자세하게 배우기 시작합니다. 나중에 자세하게 배우니 그냥 아 이런거구나 정도로만 이해해주시면 될 것 같아요 ㅎㅎ
0
하온님 답변 다는게 제 담당 일이라서 답변 힘들게 직접 안 달아주셔도 괜찮아요..!! 물론 답변 달아주시는게 하온님의 공부에도 도움이 되고 하온님께서 원하셔서 달아주시는거라면 상관 없지만요 ㅎㅎ
1
안녕하세요. 바이트의 크기는 아래의 메모리크기 * 레터럴 상수인데 int a = 5;의 경우 메모리크기는 4(int)고, 레터럴 상수는 1(a는 요소가 하나만있다)입니다. 여기서 알 수 있는것은 "변수의 값은 상관없다."입니다.
다음은 int b[NUM_DAYS]인데 int b[5]와 똑같습니다.
int b[5]의 5는 배열의 길이라는 뜻입니다.
그래서 int b[5]; == int b = {0, 0, 0, 0, 0};입니다.
위 int b배열에는 몇개의 요소가 있나요? 정답은5개입니다.
따라서 4(int) * 5(b는 배열이기에 요소가 다섯개있다.) = 20입니다.
Export template 안됨
0
4
1
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
52
3
main 함수에서 왜 int만 선언이 되는걸까요
1
56
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
54
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
137
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
60
2
getchar(), putchar()
1
93
3
강의자리ㅛ
1
79
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
75
2
F5와 F7의 차이
1
76
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2





