Read
Code
AI를 아는 것에서, 풀 수 있는 것으로
배열과 문자열 — 메모리 위의 데이터 | ReadCode
Read
Code
+ 새 공부
이런 분들이 찾고 있어요
이 레슨과 관련된 학습 키워드
AI 교육 플랫폼
AI 교육 플랫폼 추천
AI 강의 사이트
머신러닝 온라인 강의
딥러닝 강의 추천
AI 독학/로드맵
AI 독학 방법
머신러닝 공부 순서
딥러닝 로드맵
머신러닝 독학 로드맵
AI 취업/커리어
AI 취업 준비
데이터 사이언티스트 강의
ML 엔지니어 준비
AI 면접 준비
배열과 문자열
개요
내용
실험
문제
퀴즈
복습
← 개요
1 / 20
다음 →
왜 배열과 문자열이 필요한가 — 연속 메모리의 힘
−
100%
+
왜 배열과 문자열이 중요한가 — 연속 메모리의 힘
❌ 개별 변수 — 관리 불가능
temp0
23.5
temp1
18.2
temp2
31.0
···
temp999
27.8
← 1000개 변수를
각각 선언해야 함!
✔ 배열 — 연속 메모리 블록 하나로 관리
float temp[1000]; // 연속된 4000 바이트
[0]
23.5
[1]
18.2
[2]
31.0
···
[i]
?
···
[999]
27.8
0x1000
0x1004
0x1008
0x1000+i×4
0x1000+3996
O(1) 랜덤 접근 — 배열 인덱스로 즉시 접근
주소(temp[i]) = base_addr + i × sizeof(float)
시작 주소(base)에 인덱스 × 원소 크기를 더하면 → 어떤 원소든 한 번의 연산으로 접근
temp[500] 접근: 0x1000 + 500 × 4 = 0x17D0 → 바로 읽기 (탐색 없음!)
C 문자열 = char 배열 + 널 종단 문자 '\0'
C에는 문자열 타입이 없다 — char 배열 + 끝 표시 규약으로 문자열을 구현
"hello"
→
[0]
'h'
[1]
'e'
[2]
'l'
[3]
'l'
[4]
'o'
[5]
'\0'
← 널 종단!
"hello" = 5글자이지만 실제 6바이트 저장 (널 포함)
왜 '\0'이 필수인가?
배열에는 길이 정보가 없다
→ 문자열의 끝을 알 수 없음
'\0'을 만나면 "여기가 끝"
strlen(), printf() 등 모든 함수가
이 규약에 의존한다
C에 문자열 타입이 없는 이유
C의 설계 철학: 최소한의 추상화
문자열 = char[] + '\0' 규약
별도 타입 없이도 충분히 동작
→ 메모리 오버헤드 제로
→ 하드웨어에 가장 가까운 표현
순서 데이터 저장 — 배열이 필수인 시스템 영역
OS 커널
페이지 테이블, 프로세스 목록
임베디드
센서 버퍼, ADC 샘플
네트워크
패킷 버퍼, 소켓 큐
그래픽스
픽셀 버퍼, 프레임 메모리
연속 메모리 = O(1) 접근 + 캐시 친화 + 최소 오버헤드 → 시스템의 근간
왜 배열과 문자열이 중요한가
연속 메모리의 힘
❌ 개별 변수 — 관리 불가능
temp0
23.5
temp1
18.2
temp2
31.0
temp999
27.8
← 1000개 변수를 각각 선언해야 함!
✔ 배열 — 메모리 블록 하나로
float temp[1000]; // 4000 바이트
[0]
23.5
[1]
18.2
[2]
31.0
···
[i]
?
0x1000
0x1004
0x1008
+i×4
시작 주소(base) + 인덱스 × 원소 크기
→ 어떤 원소든 한 번의 연산으로 접근
last [999] = 27.8 @ 0x1000+3996
O(1) 랜덤 접근
주소 = base + i × sizeof(float)
temp[500] = 0x1000 + 500×4 = 0x17D0
→ 바로 읽기 (탐색 없음!)
C 문자열 = char 배열 + '\0'
C에는 문자열 타입이 없다 — 끝 표시 규약
"hello" →
[0]
'h'
[1]
'e'
[2]
'l'
[3]
'l'
[4]
'o'
[5]
\0
[5] = '\0' 널 종단!
"hello" 5글자 = 실제 6바이트 저장
왜 '\0'이 필수인가?
배열에는 길이 정보가 없다
→ 문자열의 끝을 알 수 없음
'\0'을 만나면 "여기가 끝"
strlen(), printf() 모두 이 규약에 의존
C에 문자열 타입이 없는 이유
설계 철학: 최소한의 추상화
문자열 = char[] + '\0' 규약
→ 메모리 오버헤드 제로
→ 하드웨어에 가장 가까운 표현
배열이 필수인 시스템 영역
OS 커널
페이지 테이블·프로세스
임베디드
센서 버퍼·ADC 샘플
네트워크
패킷 버퍼·소켓 큐
그래픽스
픽셀 버퍼·프레임
연속 메모리 = O(1) + 캐시 친화 → 시스템 근간
설명 글 접기 ▴
2
단일 변수만으로는 데이터 집합을 다룰 수 없는 이유를 설명한다. 1000개의 온도 센서 값, 사용자 이름, 픽셀 버퍼 등 실제 사례를 통해 연속된 메모리 블록이 왜 필수인지 보여준다. C에서 배열이 운영체제 커널, 임베디드 시스템, 네트워크 버퍼 등 시스템 프로그래밍의 근간을 이루는 이유를 설명한다.
3
문자열이 별도 타입 없이 char 배열로 표현되는 C의 설계 철학을 소개한다.
0:00 / 3:20
1x
✏️
💬
⌃
🎓 스크립트 보기
검색
AI 답변
✏️ 내용 수정 요청
✏️ 내용 추가 요청
질문
다음 →
이전
다음