Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

ELS1

OMG...i understand pointers!

This topic is 6099 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

i cant believe that i actually understand pointers now! now i cant live without pointers! it feels nice! oh yea...one quick question! what is the use of the **pointer? i know what i does..but i cant really apply this to a real world project :D

Share this post


Link to post
Share on other sites
Advertisement
Guest Anonymous Poster
I don''t ussually use the **pointer... I have used it.. but nothing I couldn''t have done with a single pointer... unless you need to dynamically create an array of pointers.. or you''re pointing to an array of pointers. Say, you''re writing a game, and you have pointers to objects... you store these pointers in an array of variable size (depending on how many objects in the array!!), now you could use linked lists... which holds the pointer to the next object (and sometimes the previous object) and have a head/tail pointer.. or you could make an array of pointers with a **pointer. There really isn''t any advantage to it, but that''s a use..

Billy

Share this post


Link to post
Share on other sites
quote:
or you could make an array of pointers with a **pointer. There really isn''t any advantage to it, but that''s a use..



actually i find **pointer are quite useful for quick acessing dynamics multidimensional array.
Accesing a two dimensional array this way is faster because you wont have to recalculate array indexes by i+j*numcolumns everytime you want to access an element

Share this post


Link to post
Share on other sites
Here is a use for a **...

Let''s say you are attempting to read in a file with a dynamic list of lines like:


5
grass.bmp
tree.bmp
bush.bmp
water.bmp
flower.bmp


But it could be 10, or 15, or 100000 number of lines.

So you have to declare it "char **"

So you read in the first line, 5.

So then you do this,



char *templine;

templine = fgets(filepointer);

long numberoflines;

numberoflines = atoi(templine);

char **temp = 0;

temp = new char*[numberoflines];

long x;

for(x=0;x{
char* templine;
templine = fgets(filepointer)
temp[x] = new char[strlen(templine)];
strcpy(temp[x], templine);
}

if(temp != 0)
{
for(x = 0; x< numberoflines;x++)
{
delete temp[x];
}
delete []temp;
}




Now you just read in your file that is dynamic list of text lines... No extra memory wasted, using char *''s and char **''s. No hard-coding.

Share this post


Link to post
Share on other sites
This might have been said already, but I haven''t read the other posts. One place where pointers to pointers are used, is in the DirectX API. Say you have a pointer to a directdraw interface like this:

IDirectDraw7* pDDraw;

Now, to create a valid pointer to this interface you pass the address of the pointer to the function DirectDrawCreateEx which is declared as follows:

DirectDrawCreateEx( GUID FAR *lpGuid, VOID **ppDD, REFIID iid,IUnknown FAR *pUnkOuter );

Now you could call the function like this:

DirectDrawCreateEx(NULL, &pDDraw, IID_IDirectDraw7, NULL);

This way you actually pass the address of a pointer as the ppDD parameter (the address of the IDirectDraw7 pointer, so ppDD becomes a pointer to another pointer). This will enable the DirectDrawCreateEx() function to allocate memory to pDDraw like this:

(in DirectDrawCreateEx)
*ppDD = new IDirectDraw7;

When writing *ppDD you actually reference the variable pDDraw, so the code above will put a pointer to newly allocated memory in pDDraw.
Hope you understand this...

René

Share this post


Link to post
Share on other sites
Pointers are good. I enjoy both *pointers and **pointers.

However, I personally have never found a use for a ********pointer. Does anyone have any pointers with regard to this?

___________________________________

Share this post


Link to post
Share on other sites
I still haven''t found the use of pointers, I just understand them and know how to use them. At first I thought they were there so I could create and delete variables, but now I realize that if I just make local variables, they dissapear after the function is done anyway ;0

So when will I need pointers? For AI?

------------------------------
Simple DirectMedia Layer:

Main Site - (www.libsdl.org)
Cone3D Tutorials- (cone3D.gamedev.net)
GameDev.net''s Tutorials - (Here)

OpenGL:

Main Site - (www.opengl.org)
NeHe Tutorials - (nehe.gamedev.net)
Online Books - (Red Book) (Blue Book)

Share this post


Link to post
Share on other sites
I don''t understand pointers, i know what they do, but i am not sure as to why they are useful and how they are good for solving problems and declaring pointers kinda confuses me too, also seeing it in code i don''t realise it.
anyone know a good link to explain pointers?

Share this post


Link to post
Share on other sites
quote:
Original post by ZeroBit
Accesing a two dimensional array this way is faster because you wont have to recalculate array indexes by i+j*numcolumns everytime you want to access an element

Yes you do, it''s basically just hidden from you by the compiler. Also, it is ''easier'' to make it more inefficient since the array may not be (and probably isn''t) contiguous in memory.

[Resist Windows XP''s Invasive Production Activation Technology!]

Share this post


Link to post
Share on other sites
Pointers point to stuff (data). What they point to does not need to be regularly sized as in an array. Also, what they point to does not need to be arranged linearly in memory.

Start playing with sparse dynamically changing trees and suddenly pointers will start to sound really good.

___________________________________

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!