Incrementing pointers in C++ -


why 2 following code segments not equivalent?

void print (char* s) {   if (*s == '\0')      return;     print(s+1);    cout << *s; }  void print (char* s) {   if (*s == '\0')      return;     print(++s);    cout << *s; } 

since looks op changed print(s++) print(++s), hugely different, here's explanation new version.

in first example, have:

print(s+1); cout << *s; 

s+1 not modify s. if s 4, , print(s+1), afterwards s still 4.

print(++s); cout << *s; 

in case, ++s modifies local value of s. increments 1. if 4 before print(++s), 5 afterwards.

in both cases, value equivalent s+1 passed print function, causing print next character.

so difference between 2 functions first 1 recursively print character #0, 1, 2, 3, ..., while second function prints 1, 2, 3, 4, ... (it skips first character , prints "\0" afterwards).

example:
s+1 version, print("hello") result in h e l l o
++s version, print("hello") result in e l l o \0


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -