주소와 묶음

배열, 문자열, 포인터, 구조체 주소 지도

배열과 문자열은 연속된 칸, 포인터는 주소를 담는 변수, 구조체는 서로 다른 자료형을 묶는 틀로 구분합니다.

인덱스

배열은 0번 칸부터 시작하므로 마지막 원소는 길이보다 1 작습니다.

널 문자

문자열은 마지막에 '\0'이 있어 끝 위치를 판단합니다.

주소

&는 변수의 주소를 구하고, *는 주소가 가리키는 값을 읽습니다.

묶음

구조체는 이름, 점 연산자, 포인터 화살표 연산자를 함께 봅니다.

핵심 구분

sizeof와 strlen 차이

배열 이름이 첫 원소 주소처럼 쓰이는 상황과 전체 배열 크기를 구하는 상황을 분리해야 합니다.

배열과 포인터

a[i]는 *(a + i)처럼 기준 주소에서 i칸 이동한 뒤 값을 읽는 표현입니다.

문자 입력

%s 입력은 공백 전까지 읽고, 배열 크기보다 긴 문자열은 위험합니다.

포인터 매개변수

함수 안에서 원본 값을 바꾸려면 주소를 전달해 간접 참조해야 합니다.

구조체 멤버

변수는 점 연산자, 구조체 포인터는 화살표 연산자로 멤버에 접근합니다.