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

  • Amena

    Amena

    15 Kasım 2006
  • AndroidSale

    AndroidSale

    17 NİSAN 2011
  • Helder Barreto

    Helder Barre

    22 Mayıs 2006