Data types define the type of data that can be stored in variables. The main built-in data types in C are integer (int), floating point (float, double), character (char), and pointer. Each data type specifies the type of values that can be stored as well as the amount of memory used. Arrays allow storing multiple values of the same type contiguously in memory and can be one-dimensional or two-dimensional. The sizeof operator returns the size in bytes of any type or variable. Typecasting converts values from one data type to another.