p will never equal *end though because it will either equal *end - 1, in the case where pc is never assigned to p, or it will be something below *end - 2 because right off the bat you use p - 1, which is *end - 1, to initialize pc and then you decrement pc from there. Correct me if I'm wrong though.