C언어 구조체와 구조체 포인터

코딩C언어
읽는데 5분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-03
조회수: 41

요약

C언어 구조체의 기본 개념과 구조체 포인터, 화살표 연산자(->)를 알아봅니다. 정보처리기사 실기에 자주 출제되는 구조체 문제를 풀기 위한 핵심 개념을 정리합니다.

구조체 핵심 정리

개념설명예시
구조체 선언여러 변수를 하나로 묶는 사용자 정의 자료형struct Student { int id; char name[20]; };
구조체 변수구조체 타입의 변수struct Student s1;
멤버 접근 (.)구조체 변수에서 멤버 접근s1.id
멤버 접근 (->)구조체 포인터에서 멤버 접근p->id

구조체란?

구조체(struct) 는 서로 다른 자료형의 변수들을 하나로 묶어서 관리하는 사용자 정의 자료형입니다.

예를 들어, 학생 정보를 관리한다면 학번(int), 이름(char[]), 점수(float)를 따로따로 관리하는 것보다 하나로 묶는 것이 편리합니다.

c
코드 하이라이팅 중...
구조체 개념
구조체는 여러 데이터를 하나로 묶어서 관리합니다. Student 안에 id, name, score가 함께 저장됩니다.

구조체 멤버란?

멤버(Member) 는 구조체 내부에 선언된 각각의 변수를 말합니다. 위 예시에서 id, name, score가 모두 멤버입니다.

c
코드 하이라이팅 중...
멤버 이름자료형설명
idint학번을 저장하는 정수형 멤버
namechar[20]이름을 저장하는 문자 배열 멤버
scorefloat점수를 저장하는 실수형 멤버

멤버는 서로 다른 자료형을 가질 수 있으며, 포인터 타입도 멤버가 될 수 있습니다.

c
코드 하이라이팅 중...

구조체 멤버 접근

점(.) 연산자 - 구조체 변수

구조체 변수에서 멤버에 접근할 때는 점(.) 연산자를 사용합니다.

c
코드 하이라이팅 중...

화살표(->) 연산자 - 구조체 포인터

구조체 포인터에서 멤버에 접근할 때는 화살표(->) 연산자를 사용합니다.

c
코드 하이라이팅 중...
구조체 포인터
포인터 p가 구조체 s1을 가리킵니다. p->id로 멤버에 접근할 수 있어요.

p->id(*p).id와 동일합니다. 화살표 연산자가 더 간결해서 주로 사용됩니다.



구조체 배열

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

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

구조체 배열과 포인터

구조체 배열의 특정 요소를 포인터로 가리킬 수 있습니다. 구조체가 자기 자신을 가리키는 포인터를 멤버로 가지면 연결 리스트를 만들 수 있습니다. 연결 리스트의 노드는 주로 동적 메모리 할당으로 생성합니다.

c
코드 하이라이팅 중...
구조체 배열 포인터
포인터 p가 구조체 배열의 두 번째 요소(students[1])를 가리킵니다.

함수에서 구조체 포인터 사용

구조체 포인터를 함수의 매개변수로 전달하면, 함수 내에서 원본 구조체의 값을 직접 수정할 수 있습니다. 이 패턴은 시험에 자주 출제됩니다.

c
코드 하이라이팅 중...
호출 방식설명
init(&ba, ...)ba의 주소를 전달
a->acc = x포인터로 원본 멤버에 접근하여 수정

typedef를 사용하면 struct AccAcc로 간결하게 쓸 수 있습니다.


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