webForumDet fria alternativet

Pekare

C/C++

5 svar · 578 visningar · startad av SPiN

Medlem sedan mars 20007 896 inlägg
Frågan#1

Tjenahejsan!
Jag har en liten undran om hur ofta pekare används? I Java, som jag är lite hemma med, använder man aldrig pekare. När jag skummat lite med C++ har jag inte riktigt förstått vilka användningsområden dom har?

Skulle någon vilja förklara?

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

Medlem sedan maj 2000144 inlägg
#2

Dom kan användas som argument till funktioner.
För att det går snabbare att skicka en pekare än ett objekt.
Man kan använda dom för att returnera arrayer.
Pekare är väldigt användbara.
ska du allokera upp minne dynamiskt så måste du använda pekare.

------------------
Ytterligare en pajsare utan fruktan som jönsar vidare

Medlem sedan nov. 2000199 inlägg
#3

Pekare är någonting C++ ärvt från C.

Rent genrellt är det så att pekare används i de fall man vill ha dynamiska datastrukturer. Dvs datstrukturer som kan ändra storlek efter behag. De används även för att markera aktuellt position i minnet. I stället för att somi Java använda ett index till det element man håller på med så använder man en pekare och pekar rakt på elementets minnesposition.

Pekare har ingen säkerskontroll och pekare som pekar helt fel är ett mycket vanlig orsak till fel i C och C++ program.

------------------
Anders Lindbäck,Igiro Internet Giro

Medlem sedan maj 20018 027 inlägg
#4

Dessutom är det värt att tillägga att stränghanteringen i C och C++ bygger på char-pekare som pekar på första elementet i en nullterminerad sträng. Praktiskt taget alla funktioner som har med strängar att göra, förutsätter den typen av strängar. Därför kommer man inte från pekare i C++.

"I stället för att somi Java använda ett index till det element man håller på med så använder man en pekare och pekar rakt på elementets minnesposition."

Ja, det är ett sätt. Man kan också använda index tillsammans med pekare om man behöver det. Då pekar indexet "index" antal minnesblock från pekaren. Minnesblocken är så stora som den datatyp som pekaren är definierad att peka på, så man behöver inte hålla reda på om pekaren pekar på en char (1 byte) eller någon struct (kanske många byte). Det blir rätt i alla fall om man håller reda på datatyperna. Man bör tänka på att om man inte håller reda på var man pekar, kanske man på det viset börjar peka på minnen som har allokerats av andra program. Då blir det strul.

Medlem sedan mars 20007 896 inlägg
#5

Ok, tack för alla svar :)
Jag hörde också att vid vissa tillfällen måste man använda pekare, som t.ex. då stacken är fylld...

Hur som helst verkar det inte vara vettigt att använda pekare ;)

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

Medlem sedan juni 200010 432 inlägg
#6

Hur som helst verkar det inte vara vettigt att använda pekare

Om du ska programmera i c/c++ är du nog så illa tvungen för att få korrekta program...

------------------
Ancilla, face mea laganum!

255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)