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

  • Fuse

    Fuse

    21 Kasım 2005
  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014
  • sinumatic

    sinumatic

    19 Aralık 2006