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

  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013