C soll einer verstehen...

Gast #100856
Lesenswert?

Bei folgenden Testcode kann man Zeile a und b (s. unten) variieren und
es funzt immernoch. Entweder ist "C" nicht konsequent oder ich sollte
lieber die Zeiger ner Uhr betrachten - die versteh ich nämlich.

#include <stdio.h>
#include "iostream.h"

void print_char(char c){
   cout<<c;
}

void print_string(char *c){
   while (*c != 0) {
      /* Variante 1 */
      print_char(*c); //Zeile a
      *c++;          //Zeile b
   }
}

int main(void){
   print_string("Hallo");
   return 0;
}
/*
Varinte 2
      print_char(*c++); //Zeile a
                        //Zeile b

Variante 3
      print_char(*c); //Zeile a
      c++;            //Zeile b
*/
Gast #100859
Lesenswert?

Nein, das wäre (*c)++.

Bei

*c++;

ist der Stern einfach eine Null-Anweisung, da Du das Ergebnis der
Dereferenzierung des Pointers nie benutzt.  Der Compiler wird bei
vernünftiger Optimierung daher den Pointer gar nicht erst
dereferenzieren, sondern nur noch um ein Objekt erhöhen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren