SORU
29 EKİM 2009, PERŞEMBE


Dizi, C bir pointer adı mı?

Bir dizi adı C kalemi mi? Bir dizi adı işaretçi değişkeni arasındaki fark nedir?

CEVAP
29 EKİM 2009, PERŞEMBE


Bir dizi bir dizi ve bir işaretçi bir işaretçi olduğunu, ancak çoğu durumda dizi isimleridönüştürülmüşişaretçiler. Bir dönem sıklıkla kullanılan onlarçürümeişaretçiler.

Burada bir dizi:

int a[7];

biryedi tamsayılar için boşluk içerir, ve bu gibi bir atama onlara bir değer koyabilirsiniz:

a[3] = 9;

Burada bir işaretçi:

int *p;

ptamsayılar için hiç boşluk yok, ama bir tamsayı için bir alanı işaret edebilir. Örneğin, dizideki yerleri işaret etmek için ayarlayabilirsinizbirilk olarak:

p = &a[0];

Kafa karıştırıcı olabilir ne de bu yazabilirsiniz:

p = a;

Yapardeğildizinin içeriğini kopyalayınbirişaretçipdemek ki her neyse). Bunun yerine, bir dizi adıbirilk öğe için bir işaretçi dönüştürülür. Yani bu atama önceki ile aynı işi yapar.

Şimdi bir dizi benzer şekilde p kullanabilirsiniz:

p[3] = 17;

Bu işleri neden C dizi kaldırma operatör, "[ ]", işaretçiler açısından tanımlanır.x[y]anlamı: işaretçi ile başlarxadımyunsurlar öne işaretçi işaret, ve sonra ne olursa olsun ne sonra. İşaretçi aritmetiği sözdizimi kullanarakx[y]ayrıca olarak yazılabilir*(x-y).

Bu normal bir dizi ile çalışmak için, bizim gibibiradıbir[3]ilk işaretçisi (ilk element için . çevrilmesi gerekir ^strong>bir). O zaman biz 3 elemanları bir adım öne çıkın ve alın. Diğer bir deyişle: dizideki pozisyonu 3 öğe. Diziyi ilk günden beri 0. numaralı dördüncü element olan)

Yani, özetle, bir C programında dizi isimleri (çoğu durumda) işaretçiler dönüştürülür. Bir istisna kullanıyoruzboyutubir dizi operatör. Eğerbirbu Yarışmada bir işaretçi dönüştürüldüboyutu(a)bir işaretçi boyutunu verir ve oldukça işe yaramaz, yani bu durumda olacaktır gerçek bir dizi değilbirdemek dizinin kendisi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • New Challenger - Game Reviews

    New Challeng

    20 Temmuz 2006
  • TheSalband Rai

    TheSalband R

    11 NİSAN 2011
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012