What's a pointer and how do you use it in c?
A pointer is an integer that represent an arbitrary position in memory. When computers were simpler devices, a pointer would represent that position between 0 and the very end of memory values allowed. Nowadays, memory is fragmented into a memory space, some sort of messier representation that constrains possible legal pointer values.
Pointers are still very arbitrary, but they represent an index in the giant array that memory is. They also represent the type of that memory for the compiler. This allows *pointer arithmetic*: doing operations on those arbitrary integers in a special way.
For example, imagining int* p; has a value of 2000, that means we are talking about a thing of type int situated at the index 2000 in the entire memory space. Doing p+4 means not going to 2000+4, but going 4 ints after 2000, so 2000+sizeof(int)*4. Operations like array dereference work the same: p[4] is the same as *(p+4) which is the same as *(int*)(2000+sizeof(int)*4)