Double const-Deklaration

8

Ich sehe oft die folgende Funktionsdeklaration:

%Vor%

Irgendeine Idee, warum das const vor dem Zeigernamen wiederholt wird?

Danke.

    
SyBer 28.01.2010, 16:56
quelle

8 Antworten

17

Die erste Konstante besagt, dass die Daten, auf die gezeigt wird, konstant sind und nicht geändert werden können. Die zweite besagt, dass der Zeiger selbst nicht geändert werden darf:

%Vor%     
wich 28.01.2010, 17:01
quelle
7

Typ Deklarationen sollten (?) gelesen werden RTL. const modifiziert das Ding auf der linken Seite, aber die Regel wird durch die Tatsache kompliziert, dass Sie sowohl const T als auch T const schreiben können (sie meinen dasselbe).

  • T * const ist ein konstanter Zeiger auf veränderbares T
  • T & const wäre konstante Referenz auf veränderbares T , außer Referenzen sind per Definition
  • konstant
  • T const * ist ein veränderbarer Zeiger auf die Konstante T
  • T const & ist eine Referenz auf die Konstante T
  • T const * const ist konstanter Zeiger auf die Konstante T
just somebody 28.01.2010 17:32
quelle
3

Es ist ein konstanter Zeiger auf ein konstantes unsigniertes Zeichen. Sie können weder den Zeiger noch das, auf das er zeigt, ändern.

    
Nikola Smiljanić 28.01.2010 16:58
quelle
2

In einer Deklaration wie const * const T bedeutet das erste const (vor * ), dass der Zeiger auf bei zeigt const (dh es ist ein Zeiger auf ein% co_de) %). % Co_de% nach const T bedeutet, dass der Zeiger selbst const ist (d. H. Nicht geändert werden kann, um auf etwas anderes zu zeigen).

    
Jerry Coffin 28.01.2010 16:59
quelle
2

vorausgesetzt, const unsigned char * const

Jeder ist korrekt, dass es ein const-Zeiger auf ein unsigniertes Zeichen ist.

C ++ - Typen lesen meistens von rechts nach links , es sei denn, es gibt ganz links Modifikatoren, die dann von links nach rechts gelesen werden.

    
jk. 28.01.2010 17:06
quelle
1

Dies macht es zu einem const-Zeiger auf einen const-Wert und nicht zu einem veränderbaren Zeiger auf einen const-Wert oder einem const-Zeiger auf einen veränderbaren Wert.

    
Thom Smith 28.01.2010 16:58
quelle
1

const * unsigned char const buffer bedeutet, dass Sie weder den Zeiger buffer noch den Speicher ändern können, auf den buffer zeigt.

    
Kyle Lutz 28.01.2010 16:58
quelle
1

Ein paar Artikel, die Ihnen helfen sollen, die Korrektheit von Konstanten in C ++ zu verstehen:

paxos1977 28.01.2010 17:01
quelle

Tags und Links