Both seem to be able to offer better cleaner way to deal with pointers that has been introduced in C but when are you going to use one over the other?