2011-05-06 30 views
5

Ben mesela`const char * yes [5]` bu kod satırında neyi temsil eder?

++ c typedef hakkında bir sorum var:

typedef const char* yes[5]; 

typedef const char * bir alternatif adını veren mu, bu nedenle const char * alternatif isim yes[5] mı? yes[5] burada neyi temsil ediyor? ve iki evet dizisi nasıl oluşturulur ve ikisinden birini başlatır?

cevap

7

Hayır, bu sabit karakter verilerine 5 işaretçiler bir dizi için yes yeni bir isim yapar.

Bunu düşünmenin yolu, typedef bildirimi gibi görünen ifadedir ve bildirgedeki ad, bildirilen türdeki yeni türün adı olarak kabul edilir.

typedef int x;xint için yeni bir ad yapar. Bu dizilerle değişmez.

+2

Aslında bu sözdizimi const char * için 5 işaretçiden oluşan bir dizi olduğu gibi, char char * char const * –

+0

ile aynıdır, Dan F'ye katılıyorum, 5 karakterlik const karakterini içermelidir, 5 sabit işaretçi değil char –

+0

@Dan F: Benim yerime doğru, thinko. Sabit, teşekkürler. – unwind

9

Hayır. Bu, 5 const char *  numaralı bir dizi olan yes türünü bildirir.

this link Bkz ve metin alanı içinde const char *yes[5]; yazın.