Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 배열(Array)과 구조체(Structure)의 차이점 완벽 정리

C 언어에서 배열과 구조체란 무엇인가?

C 프로그래밍 언어에서 배열(Array)구조체(Structure)는 여러 데이터를 하나의 이름으로 관리할 수 있게 해주는 대표적인 자료구조입니다. 두 개념은 비슷해 보이지만, 데이터 타입의 구성 방식, 메모리 저장 방식, 요소 접근 방법 등에서 중요한 차이가 있습니다.

배열(Array)이란?

배열은 동일한 데이터 타입을 가진 여러 데이터 항목을 하나의 개체로 묶어 표현한 것입니다. 배열에 포함된 각각의 항목은 요소(element)라고 부르며, 인덱스(index)를 통해 접근할 수 있습니다.

구조체(Structure)란?

구조체는 서로 다른 데이터 타입의 데이터 항목들을 하나의 개체로 묶어 표현한 것입니다. 구조체에 포함된 각각의 항목은 멤버(member)라고 부르며, 점(dot) 연산자를 이용해 접근합니다.

배열과 구조체의 주요 차이점 비교표

구분배열(Array)구조체(Structure)
데이터 타입동일한 데이터 타입의 항목들만 저장 가능서로 다른 데이터 타입의 항목들을 함께 저장 가능
개별 항목 명칭요소(element)멤버(member)
메모리 할당배열 선언 시 요소 전체를 위한 메모리 공간이 확보됨구조체 정의 시 멤버 전체를 위한 메모리 공간이 확보됨
선언 키워드전용 키워드가 없으며, 변수명 뒤의 대괄호 [ ]로 배열임을 나타냄struct 키워드를 사용하여 선언
초기화 시점배열 선언과 동시에 요소 초기화 가능구조체 정의 시에만 멤버 초기화 가능
메모리 저장 방식요소들이 연속된 메모리 주소에 순차적으로 저장됨멤버들이 반드시 연속된 메모리에 저장되지 않음 (패딩 발생 가능)
접근 방법대괄호 [ ] 안에 인덱스를 넣어 접근 (예: arr[0])점(.) 연산자로 접근 (예: stud1.rollno)
일반 형식data_type 변수명[크기];struct 구조체명 { 멤버 선언... } 구조체변수;

코드 예제로 살펴보기

배열 선언 예제

int sum[100];  // int형 요소 100개를 저장하는 배열 sum 선언

위 예제는 정수형(int) 데이터 100개를 저장할 수 있는 배열 sum을 선언한 것입니다. 선언과 동시에 요소 전체를 위한 메모리가 연속적으로 확보됩니다.

구조체 정의 예제

struct student {
    char studname[25];   // 학생 이름 (문자 배열)
    int rollno;          // 학번 (정수)
} stud1;

위 예제는 문자형 배열과 정수형 변수라는 서로 다른 데이터 타입을 하나의 구조체 student로 묶은 것입니다. 이렇게 정의된 구조체 변수 stud1은 점 연산자를 사용해 stud1.rollno처럼 각 멤버에 접근할 수 있습니다.

정리

배열은 같은 타입의 데이터를 연속된 메모리에 저장하는 데 최적화되어 있고, 구조체는 서로 다른 타입의 데이터를 논리적으로 그룹화하는 데 적합합니다. 실무에서는 두 개념을 함께 활용하여, 예를 들어 '구조체 배열' 형태로 여러 명의 학생 정보를 효율적으로 관리하기도 합니다.