07. maj 2004 - 20:43Der er
10 kommentarer og 1 løsning
Kode ang. pointere jeg ikke forstår
Hejsa. Jeg fandt følgende kodestump i MFC: --- UINT AFXAPI HashKey(LPCWSTR key) // Unicode strings { UINT nHash = 0; while (*key) nHash = (nHash<<5) + nHash + *key++; return nHash; } ---
Nogen der kan fortælle mig hvad *key++ gør? Mit bud ville være at at den lægger 1 til det første element i arrayet key, men det burde da ikke være muligt når key er const.
Og nu jeg er i gang, hvorfor lægger de så nHash til, når den er 0?
1) Det er kun første gang nHash er 0 2) *key er tallet, som pointeren peger på 3) *key++ eller med de implicitte paranteser (*key)++ aflæser tallet som pointeren peger på, og tæller derefter pointeren op til at pege på næste element/tal
erikjacobsen, vil du ikke mene, at paranteserne skal placeres sådan her: *(key++) ? For hvis du siger (*key)++, så ændrer du jo i det pointeren peger på, og det kan man ikke med en const pointer.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.