Implementation of resizable array (Vector or ArrayList) in C
Do not typedef a pointer.
exit on a bad index is a bit too harsh. Consider returning a success/failure indication instead.
vector-&gt;capacity *= 2 and vector-&gt;capacity /= 2 embody the reallocation policy. It doesn't feel right that this policy is spread across many functions. I recommend to consolidate it in a single function (resize_vector is a good candidate), and call it unconditionally with the desired new size.
number_of_elements is not exposed to the client. It means that the client cannot iterate over the vector elements, which severely limits the utility of the array. Either expose it, or provide a mapping interface, along the lines of

typedef (*op)(int, void *);
.... map(Vector vector, op, int, void *);


(the void * argument to share a state across the op invocations).