size_t
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   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.
[edit] 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.
[edit] Example
Run this code
Possible output:
SIZE_MAX = 18446744073709551615 size = 400
[edit] See also
|    signed integer type returned when subtracting two pointers  (typedef)  | |
|    byte offset from the beginning of a struct type to specified member  (function macro)  | |
|   C++ documentation for size_t 
 | |