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

  • dhcrr's channel

    dhcrr's chan

    2 Ocak 2007
  • newport83

    newport83

    19 HAZİRAN 2006
  • RealPapaPit

    RealPapaPit

    16 Mart 2009