Difference Between Array and Pointer

Difference Between Array and Pointer

Array and Pointer Difference

The Key Difference Between Array and Pointer is that Array is a collection of variables belongings to the same data type and carries the same size. A Pointer is a single variable that stores the address of another variable.

Comparison Between Array and Pointer
Comparison Between Array and Pointer

Comparison Chart

Array Pointer
Array is a constant pointer. Pointer variable can be changed.
It refers directly to the elements. It refers address of the variable.
Memory allocation is in sequence. Memory allocation is random.
Allocates the memory space which cannot resize or reassigned. Allocated memory size can be resized.
It is a group of elements. It is not a group of elements. It is a single variable.
Array can be initialized at definition. Example
int num[] = { 2, 4, 5}
Pointer can’t be initialized at a definition
The assembly code of Array is different than Pointer. The assembly code of Pointer is different than Array.


  • An array is a fixed-size sequenced collection of elements of the same data type.
  • An array is a derived data type.
  • The individual elements of an array is referred by their index or subscript value.
  • The subscript for an array always begins with 0.
  • Syntax:
    data_type array_name[size];
  • Example:
    int marks[5];
  • The data_type specifies the type of elements that can be stored in an array, like int, float, or char.
  • The size indicates the maximum number of elements that can be stored inside the array.
  • In the example, the data type of an array is int and the maximum elements that can be stored in an array are 5.
  • Types of an array:
    • Single dimensional array
    • Two-dimensional array
    • Multidimensional array

Advantages of Array

  • You can use one array name to store many values with different indexes.
  • An array is very useful when you are working with sequences of the same data.
  • An array makes the program easier to read, write and debug.


#include <stdio.h>
int main () {
   int a[10];
   int i,j;    
   for (i = 0;i<10;i++) {
      a[i] = i+1; 
   for (j = 0;j<10;j++) {
      printf("Element[%d] = %d\n", j, a[j] );
   return 0;


  • A pointer is a variable that contains an address or location of another variable.
  • Pointer is a derived data type in C
  • Pointers contain memory addresses as their values, so they can also be used to access and manipulate data stored in memory.
  • Syntax: data_type *pt_name;
void main()
  int a=10,*p; 
  p = &a; \\ Assign memory address of a to pointer variable p
  printf(“%d %d %d”, a, *p, p);
  • Output: 10 10 5000
  • p is integer pointer variable
  • & is the address of or referencing operator which returns the memory address of a variable.
  • * is an indirection or dereferencing operator which returns the value stored at that memory address.
  • & operator is the inverse of * operator ( x = a is same as x = *(&a))


int main () {
   int  a = 8;  
   int  *ptr;      
   ptr = &a;       
   printf("Value of variable a: %d\n", a);
   printf("Address of variable a: %d\n", ptr);
   return 0;

More Differences