정보처리기사 필기
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
C 배열·문자열·포인터·구조체
원래 이론 →헷갈리는 개념
C좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
char word[] = "cat";
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 식 | 결과 | 의미 |
|---|---|---|
sizeof word | 4 | 배열 전체 저장 용량을 바이트 단위로 계산 |
strlen(word) | 3 | 첫 널 문자 전까지의 바이트 수를 계산 |
sizeof "" | 1 | 빈 문자열 리터럴도 널 문자 한 칸을 가짐 |
strlen("") | 0 | 널 문자 앞의 내용이 없음 |
strlen은 <string.h>에 선언되어 있고 결과형은 size_t다. 유효한 널 종료 문자열을 받았다는 전제에서 첫 널 문자까지 탐색한다. 배열의 전체 용량을 알려 주지는 않는다.
문자열 중간에 널 문자가 있으면 그 지점이 논리적 끝이다.
C좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
char data[] = {'A', '\0', 'B', '\0'};
sizeof data는 4strlen(data)는 1
또한 strlen은 화면에 보이는 글자 수가 아니라 바이트 수를 센다. 여러 바이트로 표현되는 문자가 포함된 인코딩에서는 사람이 보는 문자 수와 다를 수 있다.
대표 계산·예제
첨자식 p[k]는 *(p + k)와 같은 의미이다. p가 배열 첫 원소가 아니라 중간 원소를 가리킬 수도 있다. 예를 들어 p가 &a[2]라면 p[-1]은 a[1]이며 유효하다. 음수 첨자라는 표기만으로 오류를 단정하지 말고 계산한 포인터가 실제 배열 경계 안의 원소를 가리키는지 확인한다. 반대로 배열 끝 다음 위치의 포인터를 만드는 것과 그 위치를 역참조하는 것은 다르다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.