정처기 감자
C언어구조체

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

C언어 구조체 배열

코딩C언어
읽는데 5분 소요
처음 쓰여진 날: 2026-03-19
마지막 수정일: 2026-03-21
조회수: —
선수학습(1개)
  • C언어 구조체

요약

C언어 구조체 배열의 선언과 초기화, 바깥 중괄호 생략 패턴, 구조체 배열과 포인터 접근 방법을 알아봅니다. 임의 주소를 활용한 메모리 구조 이해와 포인터 추적 방법을 포함합니다.

구조체 배열이란? 쌩기초

구조체도 배열로 선언할 수 있습니다. 배열의 각 요소가 구조체인 형태입니다.

c
코드 하이라이팅 중…
구조체 배열
구조체 배열은 각 칸에 구조체가 들어있는 배열입니다. students[0], students[1], students[2]로 접근합니다.

임의 주소로 이해하기

시험장에서 구조체 배열 문제를 풀 때, 각 요소에 임의의 주소값을 부여하면 포인터 연산을 쉽게 추적할 수 있습니다.

구조체 배열 메모리 구조
구조체 배열의 메모리 구조. 파란색 숫자는 임의로 정한 주소값입니다.
  • students[0]의 주소를 100, students[1]을 101, students[2]를 102로 정합니다.1
  • 이렇게 주소를 정해두면 p++나 p+1 같은 포인터 산술을 숫자로 계산할 수 있습니다.
시험장 팁: 임의 주소 활용법
구조체 포인터 문제가 나오면 첫 번째 요소부터 100, 101, 102... 로 주소를 적어두세요. p+1 = 101처럼 숫자로 계산하면 실수를 줄일 수 있습니다.

바깥 중괄호 생략 기초

위 코드에서는 각 구조체 요소를 {}로 감쌌지만, C언어에서는 바깥 중괄호를 생략할 수 있습니다. 컴파일러가 구조체의 첫 번째 멤버부터 차례대로 값을 하나씩 채워 넣습니다.

아래는 위 섹션과 다른 구조의 Student를 사용하는 기출 예시입니다:

c
코드 하이라이팅 중…

컴파일러는 멤버 순서대로 값을 채웁니다. 이 Student 구조체가 name, score[3] 순서이므로:

값분배 위치이유
"Kim"s[0].name첫 번째 멤버(name)에 대입
{0xA0, 0xA5, 0xDB}s[0].score두 번째 멤버(score 배열)에 대입
"Lee"s[1].names[0]이 다 채워졌으므로 s[1]로 이동
{0xA0, 0xED, 0x81}s[1].scores[1]의 두 번째 멤버에 대입
시험에서 자주 나오는 형태
기출문제에서는 바깥 중괄호를 생략한 형태가 출제된 바 있습니다. 멤버 순서를 확인하고 어디서 잘리는지 파악하는 것이 핵심입니다.

구조체 배열과 포인터 심화

구조체 배열의 특정 요소를 포인터로 가리킬 수 있습니다. 구조체 변수에 직접 접근할 때는 점(.)을 쓰지만, 포인터를 통해 접근할 때는 화살표(->)를 사용합니다.

c
코드 하이라이팅 중…
구조체와 포인터의 활용
구조체가 자기 자신을 가리키는 포인터를 멤버로 가지면 연결 리스트를 만들 수 있습니다. 자세한 내용은 연결 리스트 페이지를 참고하세요.
구조체 배열 포인터
포인터 p가 구조체 배열의 두 번째 요소(students[1])를 가리킵니다.

임의 주소로 포인터 추적하기

임의 주소를 활용하면 포인터가 어떤 구조체 요소를 가리키는지 명확하게 파악할 수 있습니다.

구조체 배열 포인터와 주소
포인터 p가 주소 101(students[1])을 가리킵니다. 파란색 숫자는 임의 주소값입니다.
  • p = &students[1]이므로 p에는 주소 101이 저장됩니다.
  • p->name은 주소 101에 있는 students[1]의 name 멤버 → "이영희"
  • p->id는 주소 101에 있는 students[1]의 id 멤버 → 1002

포인터에 정수를 더하면 해당 개수만큼 다음 구조체 요소로 이동합니다:

포인터 표현주소 계산가리키는 요소
p101students[1]
p - 1101 - 1 = 100students[0]
p + 1101 + 1 = 102students[2]
c
코드 하이라이팅 중…
포인터 산술에서 주소가 1 증가하는 이유
구조체 포인터에 1을 더하면 실제 메모리에서는 구조체 크기만큼 이동합니다. 시험에서는 실제 바이트 수를 몰라도 다음 구조체 요소로 이동한다고 이해하면 됩니다.

정보처리기사 실기 대비 문제


Footnotes

  1. 100부터 시작하는 이유는 편의상입니다. 0부터 시작하면 배열 인덱스와 헷갈릴 수 있으므로 구분되는 숫자를 씁니다. ↩


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)

추천 개념

Beta

관련 글

(41개)
제목태그업데이트시험
C언어 형변환 (Casting)
C언어코딩C언어
2026-05-15-
C언어 연결 리스트 뒤집기 (Reverse Linked List)
C언어코딩C언어
2026-05-06-
C언어 사용자 정의 함수 기초
C언어코딩C언어
2026-05-06-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999