This can cause the program to crash. Pointers were intended to be used with dynamic memory. C provides the function calloc to create and initialize dynamic memory. Object allocated in dynamic memory are independent of scoping rules and as such these type of objects can be passed from function to function. There fore one must always test the return value from any dynamic memory allocation.
Reference Passing by reference is the act of passing by pointer or reference to a function.
In a 32 bit operating system the bandwidth of data across the function interface is 4 bytes. This can be quite a performance enhancement over passing by value. If a 1 megabyte data structure is passed by value over the function interface, then 1 megabyte must be bit-wise copied over the interface. This copy could take a considerable amount of time. A function acting upon an object passed by value only effects the bit-wise copy, not the original object.