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

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • RyanXLT

    RyanXLT

    22 Ocak 2011