Sdílet prostřednictvím


Ukazatel prohlášení

"Prohlášení ukazatel" název proměnné ukazatele a určuje typ objektu, na který odkazuje proměnná.Proměnná definovaná jako ukazatel obsahuje adresu paměti.

Syntaxe

  • declarator:
    pointerOPTdirect declarator

  • přímé declarator:
    identifikátor

    ( declarator )

    přímé declarator konstantní výrazopt

    přímé declarator ( ) seznam parametrů typu )

    přímé declarator ( ) identifikátor seznamuopt**)**

  • pointer:
    *****seznamu typ kvalifikátoruopt

    *****seznamu typ kvalifikátoruoptpointer

  • seznam typ kvalifikátoru:
    typ kvalifikátoru

    Typ seznamu typ kvalifikátoru kvalifikátor

Specifikátor typu udává typ objektu, který může být v každém základní, struktury nebo typ union.Ukazatel proměnných můžete také odkazovat na funkcí, polí a dalších ukazatelů.(Informace na deklarování a interpretace složitější typy ukazatel Interpretace další složité Declarators.)

Tím, že specifikátor typuvoid, může zpozdit specifikace typu, na který odkazuje ukazatel. Tyto položky se nazývá "ukazatel na void" a je zapsán jako void *.Proměnné deklarované jako ukazatel na void lze použít pro každý typ objektu.Však provést většinu operací na ukazatel myši nebo na objekt, na který odkazuje, typ, na který odkazuje musí být explicitně určen pro každou operaci.(Proměnné typu char * a void * jsou kompatibilní přiřazení bez typu odevzdaných.) Takový převod lze provést s typem odevzdaných (viz Převody typu Cast Další informace).

Typ kvalifikátoru může být const nebo volatile, nebo obojí.Specifikují, že samotný program nelze změnit ukazatel (const), nebo ukazatel lze upravit oprávněně procesem mimo kontrolu program (volatile).(Viz Typu kvalifikátory Další informace o const a volatile.)

declarator Názvy proměnných a mohou zahrnovat typ modifikátor.Například pokud declarator představuje vlastní pole Typ ukazatel je změněn na ukazatele na matici.

Ukazatel na strukturu, unie nebo typ výčtu lze deklarovat před definovat strukturu, unie nebo typ výčtu.Ukazatel deklarujete pomocí značky strukturu nebo unie, jak je uvedeno v následujících příkladech.Tato prohlášení jsou povoleny, protože kompilátor nemusí znát strukturu nebo unie přidělit prostor pro ukazatel Proměnná velikost.

Příklady

Následující příklady ilustrují ukazatel prohlášení.

char *message; /* Declares a pointer variable named message */

message Ukazatel odkazuje proměnná s char typu.

int *pointers[10];  /* Declares an array of pointers */

pointers Pole má 10 prvků; Každý prvek je ukazatel na proměnnou s int typu.

int (*pointer)[10]; /* Declares a pointer to an array of 10 elements */

Ukazatel proměnná odkazuje na pole s prvky 10.Každý prvek tohoto pole má int typu.

int const *x;      /* Declares a pointer variable, x,
                      to a constant value */ 

Ukazatel x lze upravit, přejděte na jinou int hodnoty, ale hodnoty, kterých se nelze upravit body.

const int some_object = 5 ;
int other_object = 37;
int *const y = &fixed_object;
int volatile *const z = &some_object;
int *const volatile w = &some_object;

Proměnná y v těchto prohlášeních je deklarován jako ukazatel na konstantní int hodnotu.Hodnota odkazuje na lze upravit, ale ukazatel sám vždy přejděte na stejném místě: adresa fixed_object.Podobně z je ukazatel na konstantní, ale také je deklarován přejděte int jejichž hodnotu nelze změnit program.Další specifikátor volatile označuje, že ačkoli hodnotu const int odkazuje z nelze změnit program, jej nelze oprávněně měnit souběžně s program spuštěn proces.Prohlášení o w Určuje, že program nelze změnit na hodnotu, že program nelze změnit ukazatel myši.

struct list *next, *previous; /* Uses the tag for list */

V tomto příkladu deklaruje dvě proměnné ukazatel next a previous, přejděte na typ konstrukce list.Toto prohlášení se může zobrazit před definice list struktury typu (viz následující příklad), jako list definice typu jsou stejně viditelné jako prohlášení.

struct list 
{
    char *token;
    int count;
    struct list *next;
} line;

Proměnná line struktury typu s názvem list.list Typ struktury má tři členy: první člen je ukazatel na char , druhá hodnota int hodnotu a třetí je ukazatel na jiné list struktury.

struct id 
{
    unsigned int id_no;
    struct name *pname;
} record;

Proměnná record struktury typu id.Všimněte si, že pname je deklarována jako ukazatel na jiný typ struktury s názvem name.Toto prohlášení se může zobrazit před name je definován typ.

Viz také

Koncepty

Declarators a deklarace proměnných