Probleme mit Zeiger ind Verbindung mit Char-Arrays
-
ah ok, aber du sagst ja selbst char* obwohl es kein zeiger ist. Ich nehme mal an das felder einfach so behandelt werden. Naja so richtig klar ist es noch nicht.
-
rudpower schrieb:
ah ok, aber du sagst ja selbst char* obwohl es kein zeiger ist. Ich nehme mal an das felder einfach so behandelt werden. Naja so richtig klar ist es noch nicht.
ja weil es auch fast das gleiche ist, der einzige Unterschied ist, das du dem "Zeiger" keinen neuen Wert zuweisen kannst, was willst auch mit nem Array das du nicht mehr ansprechen kannst
, du kannst ja auch einem int xxx; keine neue Speicher Adresse zuweisen, aber mit &xxx auf die Zeiger Adresse zugreifen was dann auch sowas möglich macht (&xxx)[0], für die cout << Geschichten bist im falschen Forum also hopp ab ins C++ Forum
p.s. ich sollte mir mal angewöhnen auf meine groß und klein Schreibung zu achten, scheint fast so als würd sich das hier im Forum ausbreiten, was keine gute Entwicklung ist, ich versuche mich zu bessern, versprochen
lg lolo
-
btw. nachdem da sicher ne ganze menge Fehler drin sind, hab ich mich nicht nur als C-Noob sondern auch als Deutsch-Noob geoutet
aber ist doch sicher nicht so wild, wir sind ja eh im
Fragen zu C für Dummies hier stellen
Forum
-
Es liegt an C++. In C gäbe es zwei Möglichkeiten, vielleicht macht es das Ganze klarer:
char s[6] = "hallo"; printf("%s\n", s); printf("%p\n", s);
-
Es liegt an C++.
printf("%p", ...)
ist afaik als einziges verlässlich.volatile int numbers[] = {17, 37, 42}; std::cout << numbers[0] << std::endl; std::cout << &numbers[0] << std::endl;
-
Geht auch mit Strings:
volatile char s[] = "hallo"; std::cout << s[0] << std::endl; std::cout << &s[0] << std::endl; std::printf("%p\n", &s[0]);
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
cout << (void*)carray1 << endl;
-
rüdiger schrieb:
cout << (void*)carray1 << endl;
Funktioniert. Ist aber imo ein Workaround, und abgesehen davon 1.) kontraintuitiv und 2.) inkonsistent. Liegt das daran, dass
volatile
erst später dazugekommen ist, und dann die Anzahl der Überladungen explodiert wäre, wenn man es sauber eingebaut hätte?
-
rüdiger schrieb:
cout << (void*)carray1 << endl;
Soll man C-casts in C++ benutzen?