

However, it was unknown outside the Soviet Union and usually Harold Lawson is credited with the invention, in 1964, of the pointer. This language was widely used on the Soviet Union computers.

In 1955, Soviet computer scientist Kateryna Yushchenko invented the Address programming language that made possible indirect addressing and addresses of the highest rank – analogous to pointers.

Other measures may also be taken (such as validation & bounds checking), to verify that the pointer variable contains a value that is both a valid memory address and within the numerical range that the processor is capable of addressing. To alleviate this potential problem, as a matter of type safety, pointers are considered a separate type parameterized by the type of data they point to, even if the underlying representation is an integer. Primitive pointers are often stored in a format similar to an integer however, attempting to dereference or "look up" such a pointer whose value is not a valid memory address could cause a program to crash (or contain invalid data). Because pointers allow both protected and unprotected access to memory addresses, there are risks associated with using them, particularly in the latter case. While "pointer" has been used to refer to references in general, it more properly applies to data structures whose interface explicitly allows the pointer to be manipulated (arithmetically via pointer arithmetic) as a memory address, as opposed to a magic cookie or capability which does not allow such. Several languages, especially low-level languages, support some type of pointer, although some have more restrictions on their use than others. In object-oriented programming, pointers to functions are used for binding methods, often using virtual method tables.Ī pointer is a simple, more concrete implementation of the more abstract reference data type. Pointers are also used to hold the addresses of entry points for called subroutines in procedural programming and for run-time linking to dynamic link libraries (DLLs). In particular, it is often much cheaper in time and space to copy and dereference pointers than it is to copy and access the data to which the pointers point. strings, lookup tables, control tables and tree structures). Using pointers significantly improves performance for repetitive operations, like traversing iterable data structures (e.g. The actual format and content of a pointer variable is dependent on the underlying computer architecture. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page dereferencing such a pointer would be done by flipping to the page with the given page number and reading the text found on that page. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. This can be that of another value located in computer memory, or in some cases, that of memory-mapped computer hardware. In computer science, a pointer is an object in many programming languages that stores a memory address. In this diagram, the computing architecture uses the same address space and data primitive for both pointers and non-pointers this need should not be the case. A pointer a pointing to the memory address associated with a variable b, i.e., a contains the memory address 1008 of the variable b.
