I have written the following code in C for initializing and increment an array of pointers to int.
#include <stdio.h>
#include <stdlib.h>
int * arr;
void initArray (int *arr, int size) {
    arr = malloc(sizeof(int)*size);
    for (int i=0; i< size; i++) {
        arr[i]= i;
        printf("%d ", arr[i]);
    }
    printf("\n");
} 
void incArray(int *arr, int size) {
    for (int i=0; i< size; i++) {
        arr[i]= i+1;
        printf("%d ", arr[i]);
    }
    printf("\n");
} 
void main(){
    initArray(arr, 3);
    incArray(arr, 3);
}
Unless I use malloc in both functions, the program (when run) gives this error:
Running "/home/ubuntu/workspace/hello-c-world.c"
0 1 2
bash: line 12: 93714 Segmentation fault "$file.o" $args
Process exited with code: 139
Not sure why once the initArray function is called why it needs memory allocation again in increment function. I am assuming it's treating the array for the second function as a separate one whereas I want to increment the values in the first array that initArray function creates.
I'd really appreciate being pointed in the right direction.
 
     
     
    