SORU
31 AĞUSTOS 2012, Cuma


Neden *p *p farklı = 1 mi?

Düşünün:

void foo1(char **p) { *p  ; }
void foo2(char **p) { *p  = 1; }

ve

char *s = "abcd";
char *a = s; 
foo1(&a); 
printf("%s", a); //abcd

ama eğer foo2() kullanırsam yerine:

char *a = s; 
foo2(&a); 
printf("%s", a); //bcd

Biri bunu açıklayabilir mi?

CEVAP
31 AĞUSTOS 2012, Cuma


Anahtar = öncelik sahibi ve işletmecisi. = Daha yüksek bir öncelik (aslında, atama operatörleri C ikinci en düşük önceliğe sahiptir), işlem bu kadar

*p  

demek işaretçi çözümlemesi, işaretçiyi artış sonrakendisi1 genellikle, elde edilen adresi konusunda işaretçi aritmetik kurallarına göre, mutlaka bir bayt, daha ziyade sizeof(*p) değil gibi. Öte yandan

*p  = 1

demek artırma değeriişaret işaretçi tarafından(ve işaretçi kendisi ile hiçbir şey yapmak).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011