07. marts 2004 - 13:42Der er
10 kommentarer og 1 løsning
reference/pointer spørgsmål igen igen :D
Hej, jeg sidder og nørkler med pointere og referencer, og kan simpelthen ikke forstå hvorfor jeg ikke kan compile følgende program. For mig at se er det logisk korrekt, kan ikke se hvad jeg gør galt. Plz help :)
#include<iostream> using namespace std; class referenceTester { private: int minInt; public: referenceTester(): minInt(0) {}
void testfunk(const int& intptr1,const int& intptr2) { if (intptr1<intptr2) cout<<"1 er mindre"; }
#include<iostream> using namespace std; class referenceTester { private: int minInt; public: referenceTester(): minInt(0) {}
void testfunk(const int& intptr1,const int& intptr2) { if (intptr1<intptr2) cout<<"1 er mindre"; }
}; int main(int argc, char* argv[]) { int* h = new int[1]; // tilføjet new int* i = new int[1]; // tilføjet new *h=5; *i=6; referenceTester ref; ref.testfunk(*h,*i); // tilføjet * return 0; }
Betragt følgende der gør det samme. void testfunk(const int& intptr1,const int& intptr2) { // ref _er_ variablen if (intptr1<intptr2) cout<<"1 er mindre"; }
void testfunk(const int *intptr1,const int *intptr2) { // pointer _peger_ på variablen. if (*intptr1<*intptr2) // dereferance nødvendig, ellers du lave automatisk fejl. cout<<"1 er mindre"; }
Med pointerer kan du gå igennem et array ved at øge pointeren, ex. intptr++; peger så på den int der ligger fysisk lige efter (hvis du tæller pointeren op og der ikke ligger en int lige efter, hvilket vist kun er garanteret for arrays, går det helt galt). int* h = new int[10]; // h peger på første element. h++; // nu peger h på andet element.
Referancer -> sikre, mindre flexibel. Pointer -> flexibel, men farlige.
Der er to forskelle på pointere og referencer: 1. Notation 2. En reference er en konstant pointer.
En konsekvens af 2 er at der for referencer ikke er noget svarende til en NULL-pointer. Dvs. en reference kan ikke være udefineret på en veldefineret måde.
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.