| 프로그래밍 언어 문법 | |
| {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all" | 프로그래밍 언어 문법 C(포인터 · 구조체 · 공용체 · size_t) · C++(이름공간 · 클래스 · 특성 · 상수 표현식 · 람다 표현식 · 템플릿/제약조건/메타 프로그래밍 · 코루틴) · C# · Forth · Java · Python(함수 · 모듈) · Kotlin · MATLAB · SQL · PHP · JavaScript(표준 내장 객체, this) · Haskell(모나드) · 숨 |
| 마크업 언어 문법 HTML · CSS | |
| 개념과 용어 함수(인라인 함수 · 고차 함수 · 콜백 함수 · 람다식) · 리터럴 · 문자열 · 식별자(예약어) · 상속 · 예외 · 조건문 · 반복문 · 비트 연산 · 참조에 의한 호출 · eval · 네임스페이스 · 호이스팅 | |
| 기타 #! · == · === · deprecated · GOTO · NaN · null · undefined · S-표현식 · 배커스-나우르 표기법 | }}}}}} |
| 프로그래밍 언어 목록 · 분류 · 문법 · 예제 |
1. 개요
C/C++ 에서 쓰이는 데이터 타입이다. C80/C90 표준에 정의되어 있다.2. 설명
size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 타입으로 반드시 unsigned 형으로 나타낸다. stddef.h 및 cstddef 헤더에 정의되어 있다.아래는 C99 원문.
size_t can store the maximum size of a theoretically possible object of any type메모리 관련 표준 라이브러리 함수(malloc, memcpy, memcmp, memset, memchr 등)는 크기에 관해 항상 이 자료형을 쓴다. 운영체제에 따라 메모리 주소의 범위, 처리 가능한 최대 메모리 크기가 달라지니 운영체제에 따라 크기가 가변적인 이 자료형을 쓰는 것이다.
C++에서는 stddef.h 대신 cstddef를 include하면
std::size_t로도 쓸 수 있으며 명세도 C와 동일하다.size_t를 형변환하거나 다른 정수형과 연산 할때에는 주의해야 한다. 앞서 언급했듯이, size_t는 부호없는 정수형을 나타내기 때문에 다른 정수형과 연산할 때에는 오버플로우나 언더플로우가 발생할 수 있다. 이를 방지하기 위해서는 아래와 같이 사용하고자 하는 값을 다른 자료형에 저장 후 사용하는것이 좋다.#!syntax cpp
std::string str = "abcde";
long long len1 = str.length(); // OK, 묵시적 형변환
long long len2 = (long long)str.length(); // OK, C방식 명시적 형변환
long long len3 = static_cast<long long>(str.length()); // OK, C++방식 명시적 형변환
또한
size_t보다 더 작은 크기를 저장하는 자료형에 저장할 시에는(예: 64비트 운영체제에서 32비트에 저장하는 경우) 값이 손실될 수 있음에 유의해야 한다.