2016-03-27 11 views
-1

Die const wikipedia article Staaten zu erklären. Wie funktioniert das, wenn ich [] anstelle von * verwende, um ein Array zu deklarieren? Wie mache ich zum Beispiel folgendes:Wie Konst Zeiger auf const Zeichen-Array in C unter Verwendung von []

char s[] = "Hello"; 

in einen "const pointer to const"?

+1

Arrays sind keine Zeiger, obwohl sie in vielen Kontexten zu Zeigern zerfallen. Sie können kein gesamtes Array zuweisen, daher ist es sinnlos, ein head-const-Array zu haben. –

+0

@ColonThirtyTwo Also macht die Frage keinen Sinn? Ist die nächste, die ich zu einem unveränderlichen Wert bekommen kann const char s [] = "Hallo" '? – Ana

+0

@Ana Sie brauchen nicht mehr als das für ein Array, da der Array-Name selbst nicht geändert werden kann. Nur sein Inhalt kann, und Sie haben das mit der 'const'-Deklaration blockiert. –

Antwort

1

Sie nicht. Zunächst einmal ist s kein Zeiger, und weil es kein Zeiger ist, können Sie das Array nicht bereits ändern, um woanders zu "zeigen".

Also alles, was Sie brauchen, ist der Inhalt des Arrays konstant zu machen:

const char s[] = "Hello"; 

Die oben erklären s als ein Array von sechs konstanten char Elementen und den Inhalt mit der Zeichenfolge "Hello" initialisieren.

+1

'const char s [] =" Hallo ";' deklariert 's' als ein Array von 6 konstanten' char' Elementen. – haccks

1

Wenn in C ein Qualifikationsmerkmal zur Array-Deklaration hinzugefügt wird, qualifiziert es den Elementtyp anstelle des Arrays selbst. Abschnitt C11: §6.7.3/9

Wenn die Spezifikation eines Array-Typ umfasst all Typ-Qualifikation, der Elementtyp ist so- qualifiziert, nicht der Array-Typ [...]

.

So ist es nicht möglich, const Array const Datentyp zu deklarieren.