Возможно, вы намеревались использовать массив переменного размера, инициализируя его после прочтения n
:
// read 'n'
int n;
scanf("%d",&n);
// create an automatic (temporary) array of size 'n'
// which will be deallocated once it leaves scope
int intArr[n];
// this part is just making it harder for compiler to
// do static analysis - why not simply use `intArr`?
int * p = intArr;
Но поскольку вы используете malloc
, вам вообще не нужен временный массиви мог бы просто использовать:
// read 'n'
int n;
scanf("%d",&n);
// allocate an array of size 'n'
int * p = malloc(n * sizeof *p);
...
// release the memory
free(p);