Before we start building more complex programs with things like functions
in Chapter 5, we should cover two more useful storage categories in C:
arrays and individual bits. These aren’t really distinct types like
int
or double
, but they are useful when
dealing with tiny things or with lots of things. Indeed, the notion of an
array, a sequential list of items, is so useful we had to cheat back in
“Getting User Input” and use it without much explanation
to store user input in the form of
a string.
We have also discussed the idea of Boolean values that are either yes or no,
true or false, 1 or 0. When dealing with microcontrollers in particular, you
will regularly have a small collection of sensors or switches that are providing
on/off values. C’s normal storage options would mean devoting an entire
char
(8 bits) or int
(16 bits) to keeping track of such tiny values. That feels like a bit (ha!) of a waste, and it is. C has a few tricks you can employ to store this type of information more efficiently. In this
chapter, we’ll tackle both the big stuff by declaring arrays and then accessing and manipulating their contents, as well as how to work with the smallest bits (ahem). (And I promise not to make more bit puns. Mostly.)
It is almost impossible to find a C program tackling real-world problems that does not use arrays. If you have to work with any collection of values of any type at all, those values will almost certainly wind up in an array. A list of grades, a list of students, the list of US state abbreviations, etc., etc., etc. Even our tiny machines can use arrays to track the colors on a strip of LEDs. It is not an exaggeration to say arrays are ubiquitous in C, so let’s take a closer look at how to use them.