answersLogoWhite

0

An array is nothing more than a block of contiguous memory addresses divided into one or more units of equal length. We call these units elements. As a result, all elements of an array must be allocated contiguously.

Other than padding for memory alignment purposes, an array offers the most compact storage for multiple elements of the same type. And because the elements are allocated contiguously, it is trivial to traverse the array from one element to the next using nothing more than a pointer variable of the same type as the array. Each increment or decrement of the pointer increases or decreases the address by 1 element. The array suffix operator [] does the same thing, except the index is a zero-based offset from the start of the array. The first element is index 0 because it is 0 elements from the start of the array while the nth element is found at index n-1.

When we create an array we have the choice of storing the objects themselves in the array or storing a pointer to the objects. With the latter, the objects need not be allocated contiguously, however we consume more memory because the array of pointers consumes additional memory that we wouldn't need to consume were all the objects allocated in the array itself. We also have the additional cost of dereferencing those pointers in order to access the objects being referred to. However, arrays of pointers are advantageous when the objects are larger than a pointer (in bytes) or are of polymorphic type. Copying or moving a large object in memory is more expensive than copying or moving a pointer, so if we need to sort an array of large objects, an array of pointers is generally more efficient despite the indirection. But with polymorphic types we have to use pointers because polymorphic types are not guaranteed to be the same length so we must store a pointer to the common base type if we wish to retain polymorphic behaviour.

User Avatar

Wiki User

9y ago

What else can I help you with?

Continue Learning about Engineering

What are the different types of array explain with examples?

There are two main types of array:1) Single dimensional array: These are arrays for which only one index is required to access the element stored in an array. They are stored in a contiguous memory location.Eg:int arr[10];//declarationarr[7] = 7;//initialization2) Multidimensional array: These are arrays for which more than one index is required to access the element stored in a specific location in the array. These are stored in a contiguous memory location row-by-row.Eg:int arr[5][5];//two dimensional arrayint arr[5][5][5];//three dimensional array


What is contiguous storage allocation?

Contiguous means to share an edge or boundary, touching, adjacent, neighbouring and so on. Thus contiguous storage allocation is any allocation that consumes two or more contiguous storage elements. In the case of contiguous memory allocation, this means two or more contiguous memory addresses are allocated. A one-dimensional array is an example of a contiguous memory allocation, where one array element (a data type) is immediately followed by the next.


How is an array name interpreted?

An array name in programming is interpreted as a pointer to the first element of the array. When used in expressions, it typically evaluates to the address of the first element, allowing access to the entire array through pointer arithmetic. This means that the name of the array does not represent a single value, but rather a reference to a contiguous block of memory where the elements are stored.


How are elements of an array stored in memory?

Computer memory is linear so a one dimensional array can be mapped on to the memory cells in rather straight forward manner.To find the actual address of an element one needs to subtract one from the position of the desired entry and then add the result to the address of the the first cell in the sequence.Having said that therefore it is necessary to know the starting address of the space allocated to the array and the size of the each element, which is same for all the elements of an array.The the location of the Ith element would be B+I*S where B is the base address(Starting address of the array) and S is the size of each element of the array.


What is Arrays of Pointers?

An array of pointers is a contiguous block of memory that contains pointers to other memory locations. They essentially allow non-contiguous memory locations to be treated as if they were an actual array.

Related Questions

What is array in program?

An aggregate of elements of the same type that occupy contiguous memory.


What are the properties of a contiguous array and how can it be efficiently utilized in data structures and algorithms?

A contiguous array is a data structure where elements are stored in adjacent memory locations. This allows for efficient access to elements using indexing. Contiguous arrays are commonly used in data structures like arrays and lists, as they enable fast retrieval and manipulation of elements. In algorithms, contiguous arrays can be utilized to optimize operations such as searching, sorting, and iterating through elements. This efficient utilization of contiguous arrays helps improve the performance and speed of algorithms.


What an array?

An array is an aggregate of data elements of the same type. Arrays are allocated in contiguous memory. An element of an array can be another array type, also known as a multi-dimensional array.


What are the different types of array explain with examples?

There are two main types of array:1) Single dimensional array: These are arrays for which only one index is required to access the element stored in an array. They are stored in a contiguous memory location.Eg:int arr[10];//declarationarr[7] = 7;//initialization2) Multidimensional array: These are arrays for which more than one index is required to access the element stored in a specific location in the array. These are stored in a contiguous memory location row-by-row.Eg:int arr[5][5];//two dimensional arrayint arr[5][5][5];//three dimensional array


What is contiguous storage?

Contiguous means to share an edge or boundary, touching, adjacent, neighbouring and so on. Thus contiguous storage allocation is any allocation that consumes two or more contiguous storage elements. In the case of contiguous memory allocation, this means two or more contiguous memory addresses are allocated. A one-dimensional array is an example of a contiguous memory allocation, where one array element (a data type) is immediately followed by the next.


What is contiguous storage allocation?

Contiguous means to share an edge or boundary, touching, adjacent, neighbouring and so on. Thus contiguous storage allocation is any allocation that consumes two or more contiguous storage elements. In the case of contiguous memory allocation, this means two or more contiguous memory addresses are allocated. A one-dimensional array is an example of a contiguous memory allocation, where one array element (a data type) is immediately followed by the next.


How is an array name interpreted?

An array name in programming is interpreted as a pointer to the first element of the array. When used in expressions, it typically evaluates to the address of the first element, allowing access to the entire array through pointer arithmetic. This means that the name of the array does not represent a single value, but rather a reference to a contiguous block of memory where the elements are stored.


Why array is a primitive data structure?

An array is a primitive data structure because all elements are stored in contiguous memory. Unlike complex structures like lists and trees, elements are not stored in nodes that provide structural information. Structure is created from the elements themselves, insofar as each element is exactly the same length (in bytes) thus it is trivial to access an element in constant time from its zero-based index alone.


How is an array stored in main memory How is a linked list stored in main memory What are their comparative advantages and disadvantages Give examples of data that would be best stored as an array?

An array is stored in main memory as a contiguous block of memory locations, where each element is allocated a fixed amount of space based on its data type, allowing for efficient indexing. In contrast, a linked list consists of nodes, where each node contains data and a pointer/reference to the next node, allowing for non-contiguous storage. The advantages of arrays include constant-time access to elements and low overhead, while linked lists offer dynamic sizing and easier insertion/deletion of elements. Arrays are best for data that is fixed in size and requires frequent access, such as a list of student grades or a collection of RGB color values.


In what are various cells of memory allocated consecutively?

Contiguous memory address are allocated to an array or vector.


How are elements of an array stored in memory?

Computer memory is linear so a one dimensional array can be mapped on to the memory cells in rather straight forward manner.To find the actual address of an element one needs to subtract one from the position of the desired entry and then add the result to the address of the the first cell in the sequence.Having said that therefore it is necessary to know the starting address of the space allocated to the array and the size of the each element, which is same for all the elements of an array.The the location of the Ith element would be B+I*S where B is the base address(Starting address of the array) and S is the size of each element of the array.


What is Arrays of Pointers?

An array of pointers is a contiguous block of memory that contains pointers to other memory locations. They essentially allow non-contiguous memory locations to be treated as if they were an actual array.