Ваша проблема в том, что вы пишете в произвольных местах памяти, поскольку вы не инициализируете свои указатели и не выделяете память.
Вы можете сделать следующее:
int* p = malloc(sizeof(int));
int* q = malloc(sizeof(int));
int* r = malloc(sizeof(int));
Очевидно, вам нужно освободитьих, когда вы закончите, используя их:
free(p);
free(q);
free(r);