SORU
7 Ocak 2015, ÇARŞAMBA


Can't bir sayının karesini hesaplamak için bu yolu anlamak

Bir sayının Kare hesaplayan bir fonksiyon buldum:

int p(int n) {
    int a[n]; //works on C99 and above
    return (&a)[n] - a;
}

N değeri döndürür2. Soru, bunu nasıl yapar? Biraz test ettikten sonra, arasında (&a)[k] (&a)[k 1] sizeof(a)/sizeof(int)olduğunu buldum. Bu yüzden mi?

CEVAP
7 Ocak 2015, ÇARŞAMBA


Belli ki bir hack... ama * operatör kullanmadan bir dizi Kare alma şekli (bu kodlama Yarışması isteğiydi).

(&a)[n] 

int bir işaretçi eşdeğer konumda

(a   sizeof(a[n])*n)

ve böylece tüm ifade edilir

  (&a)[n] -a 

= (a   sizeof(a[n])*n -a) /sizeof(int)

= sizeof(a[n])*n / sizeof(int)
= sizeof(int) * n * n / sizeof(int)
= n * n

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavidParody

    DavidParody

    17 EKİM 2009
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011
  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012