SORU
4 Kasım 2013, PAZARTESİ


Neden yapı ilk elemanın adresini kullanmak yerine kendisi yapı?

Sadece geliştiriciler sürekli kopyalama//ayar ziyade yapının kendisi karşılaştırırken yapılar ilk elemanın adresi nerede iş yerinde başka bir kod tabanı üzerine geldim. Burada basit bir örnek.

İlk yapı türü vardır:

typedef struct {
    int a;
    int b;
} foo_t;

O zaman böyle bir yapı bir kopyasını yapan bir fonksiyon var:

void bar(foo_t *inp)
{
    foo_t l;
    ...
    memcpy(&l.a, &inp->a, sizeof(foo_t));
    ...
}

Olmaz kendim yazıp arama memcpy bu şekilde ve ben de dışarı çıktık beraber şüphelenen orijinal geliştiricileri basit değildi oldukça kavramak işaretçiler ve yapılar C. Ancak, şimdi gördüm bu iki alakasız kod tabanları ile hiçbir ortak geliştiricileri başladım şüphe kendime.

Neden bu tarzı kullanmak isteyeyim?

CEVAP
4 Kasım 2013, PAZARTESİ


Yerine:

memcpy(&l.a, &inp->a, sizeof(foo_t));

bunu yapabilirsiniz:

memcpy(&l, inp, sizeof(foo_t));

Tehlikeli ve yanıltıcı olabilir, her iki ifade aslında C ilk yapısı üye önce dolgu var garanti olarak aynı şeyi yapın.

Ama en iyisi sadece yapı nesneleri basit atama operatörü kullanarak kopyalamak için:

l = *inp;

Neden bu tarzı kullanmak isteyeyim?

Benim tahminim: cehalet ya da kötü disiplin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010