У вас есть указатель, но вы никогда не указываете его позицию, поэтому вы не можете присвоить значение. Вы можете решить эту проблему, инициализировав его сначала или зарезервировав динамическую c память.
В первом случае вы можете использовать это:
int i;
int *b = &i;//It gets the location of i and saves the value there
*b = 16;
И с динамической c памятью
int *b = (int*) malloc(sizeof(int));
//it reserves memory to store one int, malloc return the position of the memory you reserved
*b = 16;