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

  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • ModNation Racers H.Q.

    ModNation Ra

    31 Ocak 2010
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011