Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İşaretçi bildirimi bir işaretçi değişkenini adlandırıp değişkenin işaret ettiği nesnenin türünü belirtir. İşaretçi olarak bildirilen değişken bir bellek adresini barındırıyor.
Sözdizimi
declarator:
pointer
Tercihdirect-declarator
direct-declarator:
identifier
(
declarator
)
direct-declarator
[
constant-expression
Tercih]
direct-declarator
(
parameter-type-list
)
direct-declarator
(
identifier-list
Tercih)
pointer:
*
type-qualifier-list
Tercih
*
type-qualifier-list
Tercihpointer
type-qualifier-list:
type-qualifier
type-qualifier-list
type-qualifier
herhangi type-specifier bir temel, yapı veya birleşim türü olabilecek nesnenin türünü verir. İşaretçi değişkenleri işlevlere, dizilere ve diğer işaretçilere de işaret edebilir. (Daha karmaşık işaretçi türlerini bildirme ve yorumlama hakkında bilgi için Bkz. Daha Karmaşık Bildirimcileri Yorumlama.)
yaparak type-specifiervoid, işaretçinin başvurduğu türün belirtimini geciktirebilirsiniz. Böyle bir öğe "işaretçi void" olarak adlandırılır ve olarak void *yazılır. İşaretçi void olarak bildirilen bir değişken, herhangi bir türde bir nesneye işaret etmek için kullanılabilir. Ancak, işaretçide veya işaret ettiği nesnede çoğu işlemi gerçekleştirmek için, işaret ettiği türün her işlem için açıkça belirtilmesi gerekir. (Tür char * ve tür void * değişkenleri, tür ataması olmadan atamayla uyumludur.) Bu tür dönüştürme bir tür ataması ile gerçekleştirilebilir. Daha fazla bilgi için bkz .Type-Cast Dönüştürmeleri.
type-qualifier veya veya her ikisi de volatileconst olabilir. Bu anahtar sözcükler sırasıyla, işaretçinin programın kendisi tarafından değiştirilemeyeceklerini (const veya işaretçinin programın (volatile ) denetimi dışındaki bir işlem tarafından yasal olarak değiştirilebileceğini belirtir. ve volatilehakkında const daha fazla bilgi için bkz. Tür Niteleyicileri.
declarator değişkenini adlandıran ve bir tür değiştirici içerebilir. Örneğin, bir diziyi temsil ediyorsanız declarator , işaretçinin türü bir dizi işaretçisi olacak şekilde değiştirilir.
Yapı, birleşim veya numaralandırma türünü tanımlamadan önce bir yapı, birleşim veya numaralandırma türüne işaretçi bildirebilirsiniz. İşaretçiyi, örneklerde gösterildiği gibi yapı veya birleşim etiketini kullanarak bildirirsiniz. Derleyicinin işaretçi değişkeni için alan ayırmak için yapının veya birleşimin boyutunu bilmesi gerekmeyen bu tür bildirimlere izin verilir.
Örnekler
Aşağıdaki örneklerde işaretçi bildirimleri gösterilmektedir.
char *message; /* Declares a pointer variable named message */
İşaretçi message türü olan char bir değişkeni gösterir.
int *pointers[10]; /* Declares an array of pointers */
Dizinin pointers 10 öğesi vardır; her öğe türü olan int bir değişkenin işaretçisidir.
int (*pointer)[10]; /* Declares a pointer to an array of 10 elements */
pointer değişkeni, 10 öğe içeren bir diziye işaret eder. Bu dizideki her öğenin türü vardır int .
int const *x; /* Declares a pointer variable, x,
to a constant value */
İşaretçi x farklı int bir değere işaret etmek için değiştirilebilir, ancak işaret ettiği değer değiştirilemez.
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;
Bu bildirimlerdeki değişken y , bir değerin int sabit işaretçisi olarak bildirilir. İşaretlendiği değer değiştirilebilir, ancak işaretçinin kendisi her zaman aynı konuma işaret etmelidir: adresi fixed_object. Benzer şekilde, z sabit bir işaretçidir, ancak değeri program tarafından değiştirilemeyen bir int öğeyi işaret etmek için de bildirilir. Tanımlayıcı, volatile işaret ettiği değerinin const int program tarafından değiştirilememesine z rağmen, programla eşzamanlı olarak çalışan bir işlem tarafından yasal olarak değiştirilebileceğini belirtir. bildirimi w , programın işaret edilen değeri değiştiremezseniz ve programın işaretçiyi değiştiremezseniz belirtir.
struct list *next, *previous; /* Uses the tag for list */
Bu örnek, yapı türüne listişaret eden iki işaretçi değişkeni (next ve previous) bildirir. Tür tanımı bildirimle aynı görünürlüğe sahip olduğu list sürece, bu bildirim yapı türünün tanımından list önce görünebilir (sonraki örne bakın).
struct list
{
char *token;
int count;
struct list *next;
} line;
değişkeninin line adlı listyapı türü vardır. Yapı list türünün üç üyesi vardır: ilk üye bir char değerin işaretçisidir, ikincisi bir int değerdir ve üçüncüsü başka list bir yapıya yönelik bir işaretçidir.
struct id
{
unsigned int id_no;
struct name *pname;
} record;
değişkeni record , yapı türüne idsahiptir.
pname adlı namebaşka bir yapı türünün işaretçisi olarak bildirilir. Bu bildirim, tür tanımlanmadan önce name görüntülenebilir.