The "need" depends on what you [i]need[i].
Remember that these two syntaxes dereference the same object:
The array text has 5 elements: {'T', 'h', 'i', 's', 0}
The last element of the array, text[4], is the terminating null.
The textPtrStart points to element text[0]
text+5 would point to text[5], which is one past the end.
text+5-1 == text+4 would point to text[4], which is the last element.
text+5-2 == text+3 would point to text[2], which is the last character before the terminating null.
Note that:
1 2
|
char text[] = ""; // 1-element array
char *foo = text + sizeof(text) - 2; // == text-1, which is out-of-range
|
You apparently want to print the last character of the string (or print the string starting from the last character). For that you have to point to the character that you want.