SORU
8 Kasım 2010, PAZARTESİ


Char arasındaki fark char[1]

C ne fark (eğer varsa) kullanarak char ve char[1] arasında.

örnekler:

struct SomeStruct
{
   char x;
   char y[1];
};

Aynı sebep imzasız char için takip ediyor musunuz?

CEVAP
8 Kasım 2010, PAZARTESİ


Temel fark sadece bir char erişmek için kullandığınız sözdizimi.

"Access" yani Yasası'nı kullanarak çeşitli operatörler dili, en ya da her hangi farklı şeyler ne zaman uygulanacak, char göre char dizi. Bu ise x y neredeyse tamamen farklı olduğu gibi ses yapar. İkisi de" bir char ama char çok farklı bir şekilde temsil edilmiştir. "ibaret aslında

Uygulamaolabilirbaşka farklılıklar var çünkü, örneğin ve yapısı farklı kullandığınız göre hizalamak pad olabilir. Ama eminim öyledir.

Operatör farklılıkları bir örnek bir char atanabilir ve bir dizi değil:

SomeStruct a;
a.x = 'a';
a.y[0] = 'a';
SomeStruct b;
b.x = a.x; // OK
b.y = a.y; // not OK
b.y[0] = a.y[0]; // OK

Ama y atanabilir değil aslında SomeStruct atanabilir olmasına engel değildir:

b = a; // OK

Tüm bu türü, char ya da değil, ne olursa olsun. Bir türünde bir nesne, ve 1, çok fazla bellek ne açısından aynı boyutta bu tür bir dizi.

Bir kenara olarak, bir bağlam içinde olan çok şey farkeder ki sen "kullanmak" out of char char[1], ve bazen yardımcı olur karıştırmayın insanların içine düşünce bu dizi gerçekten işaretçiler. Senin örnek değil, ama fonksiyonu parametre olarak:

void foo(char c);     // a function which takes a char as a parameter
void bar(char c[1]);  // a function which takes a char* as a parameter
void baz(char c[12]); // also a function which takes a char* as a parameter

Numaraları bar baz tanımlamalar sağlanan tamamen C dili tarafından dikkate alınmaz. Görünüşe göre birisi bir noktada hissettim bu yararlı için programcılar gibi bir form belgeleri, belirten fonksiyonu baz bekliyor onun işaretçi değişkeni işaret etmek için ilk unsur, bir dizi 12 char.

Bar ve baz, c asla sahip dizi türü - görünüyor gibi bir dizi türü, ama değil, sadece bir fantezi özel durum sözdizimi ile aynı anlamı char *c. ""- Çok char[1] kullanmadığınız, sadece öyle görünüyor. kullanımı tırnak işaretleri koymak nedeni budur

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guillaume2111's channel

    guillaume211

    19 Kasım 2006
  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • ThePointblank

    ThePointblan

    18 Aralık 2006