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

  • Floortile83

    Floortile83

    16 Ocak 2010
  • MisterBrightside

    MisterBright

    24 Mart 2006
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009