# size_t

From cppreference.com
< c‎ | types

Defined in header `<stddef.h>` |  |
Defined in header `<stdio.h>` |  |
Defined in header `<stdlib.h>` |  |
Defined in header `<string.h>` |  |
Defined in header `<time.h>` |  |
Defined in header `<uchar.h>` |  | (since C11)
Defined in header `<wchar.h>` |  | (since C95)
typedef /*implementation-defined*/ size_t; |  |

`size_t` is the unsigned integer type of the result of `sizeof` , `_Alignof` (since C11) and offsetof, depending on the data model.

The bit width of `size_t` is not less than 16. | (since C99)

### Notes

`size_t` can store the maximum size of a theoretically possible object of any type (including array).

`size_t` is commonly used for array indexing and loop counting. Programs that use other types, such as unsigned int, for array indexing may fail on, e.g. 64-bit systems when the index exceeds UINT_MAX or if it relies on 32-bit modular arithmetic.

### Example

Run this code

    #include <stdio.h>
    #include <stddef.h>
    #include <stdint.h>

    int main(void)
    {
        const size_t N = 100;
        int numbers[N];
        for (size_t ndx = 0; ndx < N; ++ndx)
            numbers[ndx] = ndx;
        printf("SIZE_MAX = %zu\n", SIZE_MAX);
        size_t size = sizeof numbers;
        printf("size = %zu\n", size);
    }

Possible output:

    SIZE_MAX = 18446744073709551615
    size = 400

### References

- C17 standard (ISO/IEC 9899:2018):

  - 7.19 Common definitions <stddef.h> (p: 211)

  - 7.20.3 Limits of other integer types (p: 215)

- C11 standard (ISO/IEC 9899:2011):

  - 7.19 Common definitions <stddef.h> (p: 288)

  - 7.20.3 Limits of other integer types (p: 293)

- C99 standard (ISO/IEC 9899:1999):

  - 7.17 Common definitions <stddef.h> (p: 253)

  - 7.18.3 Limits of other integer types (p: 258)

- C89/C90 standard (ISO/IEC 9899:1990):

  - 4.1.6 Common definitions <stddef.h>

### See also

ptrdiff_t | signed integer type returned when subtracting two pointers (typedef)
offsetof | byte offset from the beginning of a struct type to specified member (function macro)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/types/size_t&oldid=140197"