What is a memory location?

It usually doesn't matter what the architecture is because, for a large majority of CPUs in use, addressable locations are in units of bytes.

As @Caramiriel says, the long strip of paper is made out of a series of bytes.

Sometimes you deal with them in larger chunks, say a uint32_t deals with 4 bytes in one go.

When you get to structs or objects, these deal with larger chunks of memory, or multiple chunks of memory so that you don't have to know the details.

However, I think that the C language, and therefore C++, can be ported to a wide variety of architectures where the smallest addressable unit of memory could be larger (or smaller) that one byte.