# What Are Pointers?

## Contents

#### Terms

Address  -  The numbered location of a place in memory. An address of a certain piece of memory is used by the computer to identify each piece and locate it quickly, just as the postal address of a house is used to help quickly identify it to the postman.
Array  -  A data structure that groups a number of data elements of the same type together into a sequential list in memory.
Binary Notation  -  For most math in every day life, humans use decimal notation, meaning that each digit in a number can be from 0 to 9 (decimal means 10, or 10 possible numbers for each digit). Computers, however, use binary notation to represent a number, binary meaning 2. This means that each digit can be one of two possible numbers, a 0 or a 1. This works well for a computer as it can represent each digit as a switch that can be either on or off, on being a 1, and off being a 0.
Compile  -  When programmers write code, they often write it in a high-level language like C or C++. The computer, however, cannot understand this code as is. The computer can only understand machine code, 0's and 1's that tell the computer exactly what instructions to carry out. In order to convert from the high-level code written by the programmer to the machine code the computer can use, the user must run the high-level code through a compiler, an application that does the translation. This process is referred to as compiling.
Crashing  -  The operating system is very protective of the computer and all applications running on it (or at least it should be). If an application attempts to do something that doesn't make any sense or that might harm another program, the operating system will most likely shut down the offending program. This unexpected shutting down is referred to as crashing. An application will normally crash due to something unexpected that occurred, be it an error in the programming of that application, a memory problem, a disk access problem, etc. Depending on the operating system running, sometimes the crashing of an application will only affect that one application, and sometimes it will affect other applications (or even the operating system itself) running on the computer.
Declare  -  To declare a variable or a function is to tell the computer that you intend to use the function or variable being declared. The computer sets aside the resources needed to provide the things being declared. In most high-level languages, like C/C++, variables must be explicitly declared before they can be used, while in others, like lisp and perl, declaration is done implicitly (without being specifically programmed in).
Decimal Notation  -  Decimal notation, or base 10, is the method of writing down numbers that humans use for most everyday purposes. Decimal means 10, meaning that when we write a digit in a number it can be one of 10 possible digits, anything from a 0 to a 9.
Dereference  -  A pointer stores an address of a location in memory. To get at what that value contains, we need to dereference the pointer, meaning we need to go to that location and get what is there.
Hexadecimal Notation  -  Like decimal notation and binary notation, hexadecimal notation is another way of writing numbers. Hex is base 16, meaning that each digit can be one of 16 possibilities, 0 through 9 and A through F. Hexadecimal numbers are normally written with a "0x" in front of them to inform the reader that it is in fact a hexadecimal number.
Memory  -  Memory is hardware that can store information. Memory can usually store much less information than a disk drive but is much faster to access. When programmers store data in variables or dynamically allocated space, this data resides in memory.
Pointers  -  Pointers are variables that store addresses, memory locations.
Pointer Arithmetic  -  The process of adding or subtracting an integer to or from a pointer to obtain the address of another piece of memory. Pointer arithmetic can also be used to subtract one pointer from another in order to determine how many variables lie between the addresses they store.
Segmentation Fault  -  When a program tries to access a piece of memory that it doesn't have a right to access, the operating system will do everything it can to prevent trouble trouble arising from this illegal access. Often, it will attempt to shut the program down, resulting in the program crashing. The process of accessing an invalid piece of memory is often referred to as seg faulting, or causing a segmentation fault. Often, the term "seg fault" is used synonymously with "crashing," as in "My program just seg faulted."