Examples:
Example 1: C program to understand difference between pointer to an integer and pointer to an array of integers. 
#include<stdio.h> 
int main() 
{ 
    // Pointer to an integer 
    int *p; 
    // Pointer to an array of 5 integers 
    int (*ptr)[5]; 
    int arr[5]; 
    // Points to 0th element of the arr. 
    p = arr; 
    // Points to the whole array arr. 
    ptr = &arr; 
    printf("p = %p, ptr = %p\n", p, ptr); 
    p++; 
    ptr++; 
    printf("p = %p, ptr = %p\n", p, ptr); 
    return 0; 
} 
Example 2: C program to illustrate sizes of pointer of array 
 #include<stdio.h> 
    int main() 
    { 
        int arr[] = { 3, 5, 6, 7, 9 }; 
        int *p = arr; 
        int (*ptr)[5] = &arr; 
        printf("p = %p, ptr = %p\n", p, ptr); 
        printf("*p = %d, *ptr = %p\n", *p, *ptr); 
        printf("sizeof(p) = %zu, sizeof(*p) = %zu\n", 
                            sizeof(p), sizeof(*p)); 
        printf("sizeof(ptr) = %zu, sizeof(*ptr) = %zu\n", 
                            sizeof(ptr), sizeof(*ptr)); 
        return 0; 
    } 
Example 3:  C program to print the elements of 3-D array using pointer notation 
#include<stdio.h> 
int main() 
{ 
int arr[2][3][2] = { 
                    { 
                        {5, 10}, 
                        {6, 11}, 
                        {7, 12}, 
                    }, 
                    { 
                        {20, 30}, 
                        {21, 31}, 
                        {22, 32}, 
                    } 
                    }; 
int i, j, k; 
for (i = 0; i < 2; i++) 
{ 
    for (j = 0; j < 3; j++) 
    { 
    for (k = 0; k < 2; k++) 
        printf("%d\t", *(*(*(arr + i) + j) +k)); 
    printf("\n"); 
    } 
} 
return 0; 
} 
Hope this can help you to understand.