process *allocate_pcb(); // This is the prototype. It's required so that you can call this function
process *pcb = allocate_pcb();
cout << pcb; // The ouput is the value of the pointer
process *allocate_pcb() // Needs to match the prototype
process *pcb = new process;
assert(pcb != NULL);
C++ is strongly typed. It's required to provide always the type.