배열
- 동질형 데이터의 모음으로 구성된 타입
- 원소: 각 데이터
- 배열의 크기: 배열이 갖는 원소의 개수
- 각 원소는 첨자(첫 원소와의 상대적 위치)로 구별
- 연산 집합: 배열 전체를 다루는 연산
데이터 집합
- 원소의 타입에 해당하는 데이터 집합이 배열의 크기만큼 모인 집합
- 원소의 타입과 배열의 크기에 따라 다양한 타입 존재
- 원소의 타입: 단순타입, 복합타입 모두 가능
- 배열의 크기: 양의 정수 범위 * 차원
- 차원: 배열에 사용되는 첨자의 개수 → 1차원, 2차원, 3차원, … 배열
배열의 구현
- 저장공간 확보
- 정적 변수
- 스택 동적 변수: 배열의 크기는 정적/동적
- 힙 동적 변수
- 첨자를 통한 원소의 주소 계산
- 크기 N인 1차원 배열 A: 주소(A[i]) = 주소(A[0]) + i * 원소크기
- 크기 M*N인 2차원 배열 B
- 행 우선 저장(대부분의 언어): 주소(B[i][j]) = 주소(B[0][0]) + i * N * 원소크기 + j * 원소크기
- 열 우선 저장: 주소(B[i][j]) = 주소(B[0][0]) + j * M * 원소크기 + i * 원소크기
문자열형
- 문자열 데이터를 다루는 타입
- 데이터 집합: 모든 문자열이 모인 집합
- 연산 집합: 대입 연산, 연결 연산
연관배열(associative array)과 해싱
- 동질형 데이터의 순서 없는 모음으로 구성된 타입 (원소 간의 위치는 의미 없음)
- 각 원소는 키(각 원소의 절대 위치)로 구별 → 키는 중복 불가, 원소는 중복 가능
- 데이터 집합
- 키의 타입에 해당하는 데이터 집합과 원소 타입에 해당하는 데이터 집합 쌍이 모인 집합
- 키의 타입과 원소의 타입에 따라 다양한 타입 존재
구조체와 공용체
구조체
- 데이터의 모음으로 구성된 타입 → 원소: 동질형/이질형 모두 가능
- 각 원소는 이름(원소의 타입으로 선언된 변수명)으로 구별
- 데이터 집합
- 각 원소의 타입에 해당하는 데이터 집합들이 모인 집합
- 원소의 개수와 각 원소의 타입(단순타입, 복합타입 모두 가능)에 따라 다양한 타입 존재
- 연산 집합: 초기화, 대입 연산
공용체
- 저장 공간을 공유하는 데이터의 모음으로 구성된 타입
- 원소들의 구성 형태는 구조체와 유사 → 각 원소는 이름으로 구별
- 한 원소의 값이 바뀌면 다른 원소들이 영향을 받음
- 데이터 집합
- 각 원소의 타입에 해당하는 데이터 집합들의 합집합
- 각 원소의 타입(단순타입, 복합타입 모두 가능)에 따라 다양한 타입 존재
- 연산 집합: 개별 원소 타입의 연산
포인터형과 참조형
포인터형
- 특정 데이터가 저장되는 주소 자체를 데이터로 다루는 타입이며, 특정 데이터의 타입은 사용자가 지정함
- 데이터 집합
- 가용한 범위의 주소를 포함
- 2^32 이내(32비트 시스템) 혹은 2^64 이내(64비트 시스템)
- 연산 집합: 대입 연산, 덧셈, 뺄셈
참조형
사용자가 지정하는 타입의 데이터가 저장된 주소 자체를 자신의 주소로 사용하는 타입
'CS' 카테고리의 다른 글
[컴퓨터과학개론] 프로그래밍 언어 (0) | 2023.12.04 |
---|---|
[컴퓨터과학개론] 컴퓨터 구조 (4) | 2023.12.03 |
[프로그래밍 언어론] 타입 (0) | 2023.12.01 |
[프로그래밍 언어론] 변수의 영역 (0) | 2023.12.01 |
[프로그래밍 언어론] 변수와 바인딩 (0) | 2023.12.01 |