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
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ı.
Nasıl python yorumlayıcısı yapmak doğr...
En az iki kontrol üç booleans dışarı d...
Hızlı eğer string sadece rakam varsa k...
Objective-C boş bir dize kontrol etmek...
Bash, nasıl eğer bir string değer ile ...