const Char Zeigerzuweisungen

7

Sind die folgenden Zuweisungen gültig? Oder wird irgendetwas von diesen Problemen verursachen. Bitte schlagen Sie vor.

%Vor%

Was passiert, wenn ich Folgendes tue?

%Vor%     
user32262 12.10.2011, 06:21
quelle

4 Antworten

30

Zeichnen Sie in Gedanken eine Linie durch den Asterik. Auf der linken Seite ist, was auf und nach rechts gezeigt wird, welche Art von Zeiger

Zum Beispiel

  1. const char * const p - Der Zeiger p ist konstant und ebenso die Zeichen, auf die p zeigt - d. h. der Zeiger und der Inhalt können nicht geändert werden, auf den p auf
  2. zeigt
  3. const char * p - p zeigt auf konstante Zeichen. Sie können den Wert von p ändern und dafür sorgen, dass er auf verschiedene konstante Zeichen zeigt. Aber was auch immer p zeigt, Sie können den Inhalt nicht ändern.
  4. char * const p - Sie können den Zeiger nicht ändern, aber den Inhalt ändern

und schließlich

  1. char * p - Alles ist zu vergeben

Ich hoffe, das hilft.

    
Ed Heal 12.10.2011 10:00
quelle
9

Alle sind gültige Anweisungen, da Sie sie nicht dereferenzieren, weil alle Zeiger nicht oder nicht auf gültige Speicherstellen verweisen.

Und sie sind gültig, weil der Zeiger nicht konstant ist, sondern der Wert, auf den der Zeiger zeigt, konstant ist. So können Zeiger hier neu zugewiesen werden, um auf einen anderen Ort zu zeigen.

    
Mahesh 12.10.2011 06:24
quelle
3

Diese Zuweisungen sind alle perfekt gültig, wie ich und andere in Ihrem letzten Lauf fast identischer Fragen erklärt haben.

A const char* ist ein Zeiger auf Speicher, der nicht mit diesem Zeiger geändert werden kann. Nichts kann das umgehen. Der Compiler würde einwenden, wenn du c4 = c1 seit dem zugewiesen hast, was die const umgehen würde.

    
David Heffernan 12.10.2011 06:28
quelle
0

Alle diese sind gültig, die einzige problematische Zeile ist char * c6 = "abc"; : hier ist "abc" ein const-Literal, also ist es nicht sicher und sollte zumindest eine Warnung erzeugen, wenn es nicht kompiliert wird Fehler (Ich habe nicht versucht, es zu kompilieren).

    
hege 12.10.2011 22:16
quelle

Tags und Links