SORU
23 Mart 2011, ÇARŞAMBA


Bir dize scanf ile okuma

Biraz bir konuda kafam karıştı. Scanf ile C bir dize okuma doğru yol olduğunu sanıyordum() çizgisinde gitti

(hiç olası arabellek taşması, sadece basit bir örnekti)

char string[256];
scanf( "%s" , string );

Ancak, aşağıdaki çok iş gibi görünüyor

scanf( "%s" , &string );

Bu sadece benim derleyici (gcc), saf şans, yoksa başka bir şey mi?

Şimdiden teşekkürler

CEVAP
23 Mart 2011, ÇARŞAMBA


Bir dizi "çürük scanf("%s", string) scanf("%s", &string[0]) eşdeğerdir yani" ilk öğe için bir işaretçi içine. Diğer taraftan, scanf("%s", &string) geçer ama aynı yeri işaret ediyor--char[256] işaretçi.

O zaman bağımsız değişken listesinde kuyruğu işlerken scanf,, char * bir çıkarmaya çalışacağız. Doğru zaman var geçti string &string[0] ama ne zaman oldun geçti &string sensin bağlı bir şey bu dil standart garantilemez, yani işaretçiler &string &string[0] -- işaretçiler nesnelerin farklı türleri ve boyutları bu başlangıç aynı yer ... ... temsil aynı şekilde.

Şimdiye kadar hangi işe yaramayacak bir sistem karşılaştığım inanmıyorum, ve muhtemelen uygulamada güvendesin. Hiçbiri az, yanlış ve bazı platformlarda başarısız olabilir. (Farazi bir örnek: "" her işaretçi tip bilgileri içeren bir uygulama. hata ayıklama Bendüşünüyorumbu C uygulaması "Lisp Makineleri" böyle bir şey yaptı.) Symbolics

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • Muse

    Muse

    28 EYLÜL 2006