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

C/C++ 기본 데이터 타입과 파생 데이터 타입의 차이점 총정리

C나 C++ 프로그래밍 언어를 배우다 보면 기본 데이터 타입(Fundamental Datatypes)파생 데이터 타입(Derived Datatypes)의 개념을 반드시 이해해야 합니다. 이 두 가지는 변수를 선언하고 메모리를 관리하는 방식에서 근본적인 차이를 보이기 때문입니다.

기본 데이터 타입 vs 파생 데이터 타입 비교표

기본 데이터 타입파생 데이터 타입
원시 데이터 타입(Primitive Datatypes)이라고도 불립니다.기본 데이터 타입들을 조합하여 만들어집니다.
int, char, float, void 등이 대표적입니다.배열(array), 구조체(structure), 포인터(pointer) 등이 해당됩니다.
정수 및 문자 타입은 int, char, signed int, signed char, unsigned int, unsigned char로 세분화됩니다.포인터는 다른 변수의 메모리 주소를 저장하는 데 사용됩니다.
정수 타입은 정수형 데이터만 저장하며, 소수점 숫자는 저장할 수 없습니다.배열은 동일한 타입의 데이터(동질적 데이터)를 연속적으로 저장합니다.
실수 타입은 소수점 숫자를 저장하며, float, double, long double의 변형이 있습니다.구조체는 int, float, double 같은 여러 원시 타입을 하나로 묶은 그룹입니다.
void는 반환값이 없음을 명시할 때 사용됩니다.공용체(union)는 구조체와 유사하지만, 모든 멤버가 동일한 메모리 공간을 공유합니다.

기본 데이터 타입(Fundamental Datatypes)이란?

기본 데이터 타입은 컴파일러가 기본적으로 제공하는 가장 단순한 형태의 데이터 타입입니다. 별도의 조합 없이 그 자체로 하나의 값을 표현합니다.

  • int: 정수형 데이터를 저장합니다. signed(부호 있음)와 unsigned(부호 없음) 옵션으로 음수 포함 여부를 결정할 수 있습니다.
  • char: 문자 하나를 저장하며, 내부적으로는 아스키 코드 값으로 처리됩니다.
  • float / double / long double: 소수점이 있는 실수를 저장합니다. double은 float보다 더 넓은 범위와 높은 정밀도를 제공합니다.
  • void: 값이 없음을 의미하며, 주로 함수가 반환값을 갖지 않을 때 사용됩니다.

파생 데이터 타입(Derived Datatypes)이란?

파생 데이터 타입은 이름 그대로 기본 데이터 타입에서 파생되어 만들어진 타입입니다. 여러 개의 데이터를 묶거나 메모리 주소를 다루는 등 더 복잡한 구조를 표현할 수 있습니다.

  • 배열(Array): 같은 타입의 데이터 여러 개를 하나의 이름으로 연속된 메모리에 저장합니다.
  • 포인터(Pointer): 변수가 위치한 메모리 주소 자체를 값으로 저장하여, 간접 참조를 가능하게 합니다.
  • 구조체(Structure): 서로 다른 타입의 변수들을 하나의 논리적 단위로 그룹화합니다.
  • 공용체(Union): 구조체와 비슷하지만, 모든 멤버가 하나의 메모리 공간을 공유하므로 한 번에 하나의 멤버만 유효하게 사용됩니다.

핵심 요약

정리하자면, 기본 데이터 타입은 언어가 처음부터 제공하는 원시적인 타입이고, 파생 데이터 타입은 이러한 기본 타입들을 조합하거나 확장하여 만든 타입입니다. 기본 타입이 '재료'라면, 파생 타입은 그 재료로 만든 '완성품'이라고 이해하면 쉽습니다.