SORU
28 Mart 2009, CUMARTESİ


C programlama void pointer kavramı

Tür çevrim C programlama dili olmadan void işaretçi çözümlemesi mümkün mü?

Ayrıca, bir işaretçi alabilir ve yaygın bir işlev yapabiliriz işaretçi bu boşluğu kullanarak geçersiz bir işaretçi ve deposu olan bir fonksiyon genelleme herhangi bir yolu var mı?

örneğin

void abc(void *a, int b)
{
   if(b==1)
      printf("%d",*(int*)a);     // If integer pointer is received
   else if(b==2)
      printf("%c",*(char*)a);     // If character pointer is received
   else if(b==3)
      printf("%f",*(float*)a);     // If float pointer is received
}

Bu işlev, genel,-eğer başka ifadeler kullanmadan yapmak istiyorum, mümkün mü?

Ayrıca eğer void işaretçi kavramını açıklamak bazı internet makaleleri varsa, o zaman eğer URL sağlayabilirseniz faydalı olacaktır.

Ayrıca, void işaretçiler işaretçi aritmetiği mümkün mü?

CEVAP
28 Mart 2009, CUMARTESİ


İşaretçi türü-döküm C programlama dili olmadan... boşluğu inceleyebilirsiniz mümkün

Hayır, void tip yokluğu gösterir, başvuru ya da atayabilirsiniz bir şey değildir.

işaretçi almak ve saklamak genelleştirilmiş bir işlev yapabiliriz işaretçi bu boşluğu kullanarak geçersiz bir işaretçi ve bir işlevi genelleme herhangi bir yolu yoktur

Sadece düzgün uyumlu olmayabilir gibi taşınabilir bir şekilde başvuru yapamazsınız. Olabilir bir konuda bazı mimariler gibi KOL, nereye işaretçi için bir veri türü olması gerekir uyumlu sınırında boyutu veri türü (örneğin, işaretçi olarak 32-bit tamsayı olmalı uyumlu 4 baytlık sınırı için başvuru yapıldı).

Örneğin, okuma 5* *void*:

/* may receive wrong value if ptr is not 2-byte aligned */
uint16_t value = *(uint16_t*)ptr;
/* portable way of reading a little-endian value */
uint16_t value = *(uint8_t*)ptr
                | ((*(uint8_t*)(ptr 1))<<8);

Ayrıca, void işaretçiler mümkün olan işaretçi aritmetik

İşaretçi aritmetiği işaretçi altında somut değer ve dolayısıyla boyutu eksikliği nedeniyle void işaretçileri mümkün değildir.

void* p = ...
void *p2 = p   1; /* what exactly is the size of void?? */

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Capcom Unity

    Capcom Unity

    5 NİSAN 2010