SORU
17 Temmuz 2009, Cuma


Sabit*, int * sabit ve sabit int *int arasındaki fark nedir?

Ben her zaman const int*, const int * const, int const * doğru kullanmak için nasıl berbat. Kurallar ne tanımlayan bir dizi yoktur ve olamaz mı?

Var ve atamalar açısından tüm kurallar, fonksiyonlar, vb geçiyor bilmek istiyorum.

CEVAP
17 Temmuz 2009, Cuma


Tersten okuyun...

  • int* - int işaretçi
  • int const * - int işaretçi
  • int * const - int sabit işaretçi
  • int const * const - int sabit işaretçi

Şimdi ilk sabit tip iki tarafında olabilir:

  • const int * == int const *
  • const int * const == int const * const

Eğer gerçekten deli gitmek istiyorsanız, bu gibi şeyler yapabilirsiniz:

  • İnt işaretçi işaretçi int ** -
  • int ** const - bir int bir işaretçi sabit bir işaretçi
  • int * const * - bir int sabit bir işaretçi bir işaretçi
  • int const ** - sabit bir int bir işaretçi bir işaretçi
  • int * const * const - bir int sabit bir işaretçi sabit bir işaretçi
  • ...

Ve sabit bir anlamı temiz olduğundan emin olmak için

const int* foo;
int *const bar; //note, you actually need to set the pointer 
                //here because you can't change it later ;)

foo sabit bir int değişkeni bir işaretçi. Bu sizin için anlamı ne değişim ama işaret eden bir değer sağlar. Genellikle bu const char bir işaretçisi olduğu cstrings görülür. İşaret eden değiştirebilirsiniz ama bu dizeleri içeriğini değiştiremezsin. Bu dize kendisi bir programın veri kesimi için önemli olduğunu ve değiştirilmesi gerektiğini.

bar değiştirilebilir bir değer sabit veya sabit bir işaretçi. Bu ekstra sözdizimsel şeker olmadan bir referans gibidir. Bu gerçeği nedeniyle, genellikle boş işaretçileri sağlamak için gerekli olmadıkça T* const bir işaretçi kullanacağınız bir referans kullanın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • George McCarron

    George McCar

    29 Mayıs 2013
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011
  • xCraash

    xCraash

    6 Temmuz 2012