SORU
9 Temmuz 2013, Salı


Bu ise 2 c-string bellekte üst üste kontrol doğru ve taşınabilir bir yol var mı?

En etkili yolu olmayabilir, ama doğru ve taşınabilir mi?

int are_overlapping(const char *a, const char *b) {
  return (a   strlen(a) == b   strlen(b));
}

Netleştirmek için: aradığım şeyi tekrarlarbellekgerçek içeriği değil. Örneğin:

const char a[] = "string";
const char b[] = "another string";
are_overlapping(a, b); // should return 0
are_overlapping(a, a   3); // should return 1

CEVAP
9 Temmuz 2013, Salı


Evet, eğer kodu doğru mu? Eğer iki dize örnek yerde bitirmek eğer tanımı gereği onlar çakışan aynı null sonlandırıcı paylaşıyorlar. Ya iki dizge aynıdır, ya da diğer bir dize.

Program hakkında her şeyi mükemmel biçimde tanımlanmış davranışları, standartlarla uyumlu varsayarak, mükemmel taşınabilir olmalı Derleyiciler.

Standart ilgili biraz6.5.9 Eşitlik operatörleri(vurgu benim):

İki işaretçiler eşit ve karşılaştırınher ikisi de null işaretçilerher ikisi de aynı nesneyi işaret ederler(bir nesneye bir işaretçi ve kendi başına bir sınıfın da dahil olmak üzere) veya işlevher ikisi de aynı dizi nesnenin son öğe geçen bir işaretya da bir işaretçi için bir son sonunda bir dizi nesne ve başka bir işaretçi başlatmak farklı bir dizi nesne olur hemen izleyin ilk dizi nesne adres alanı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MotoManTV

    MotoManTV

    10 Aralık 2009
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011
  • Watcher3223

    Watcher3223

    15 Kasım 2007