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

  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013
  • tunez4you

    tunez4you

    20 EKİM 2008