Zeiger
-
Hallo,
hab mal ne Frage zu folgendem Code
#include <iostream> using namespace std; int main() { char word[] = "Panama-Kanal", *p = word; cout << *p << endl; // P cout << *p-2 << endl; // ASCII P = 80d - 2d = 78d cout << *(p+3) << endl; // a p++; cout << *p << endl; // a (++p)++; cout << p << endl; // ama-Kanal p = word; *(p+3) = 0; cout << p << endl; // hätte hier Pan0ma-Kanal // anstatt Pan erwartet char dummy; cin >> dummy; return 0; }Es geht mir eigentlich nur um folgende Zeile:
*(p+3) = 0;
Hat diese Zeile die gleiche Wirkung wie
*(p+3) = '\0';
falls ja könnt ihr mir dann mal erklären warum das das gleiche bewirkt. Bei dem einen wird doch der String beendet mit \0 bei dem anderen doch nicht weil das \ fehlt oder?
-
'\0' ist das char mit dem wert 0.
0 ist ein int mit dem wert 0 und wird vom compiler implizit in char '\0' konvertiert.
Kurt
-
ein string wird mit einem byte beendet das den wer 0 hat
also die bitfolge 00000000*(p+3) = 0; //dem byte wird 0 zugewiesen *(p+3) = '\0'; //dem byte wird 0 zugewiesen *(p+3) = '0'; //dem byte wird der ascii code der ziffer 0 zugewiesen //ka welcher das is aber definitiv nich 0