All I wanted is to speak about pointers..

Posted on August 31, 2007. Filed under: Codings, Education, Techie |

I always came across many dudes who find pointers, a little difficult part of C programming. So, Here’s a short tutorial about pointers..

Salvation lies beneath:

The C language allows the programmer to “peek and poke” directly into memory locations. This gives great flexibility and power to the language, but it also one of the great hurdles that the beginner must overcome in using the language.

All variables in a program reside in memory; the statements

    float x;
    x = 6.5;

request that the compiler reserve 4 bytes of memory (on a 32-bit computer) for the floating-point variable x, then put the “value” 6.5 in it. Sometimes we want to know where a variable resides in memory. The address (location in memory) of any variable is obtained by placing the operator “&” before its name. Therefore &ampx is the address of x. C allows us to go one stage further and define a variable, called a pointer, that contains the address of (i.e. “points to”) other variables. For example:

    float x;
    float* px;

    x = 6.5;
    px = &x;

defines px to be a pointer to objects of type float, and sets it equal to the address of x:
Pointer use for a variableThe content of the memory location referenced by a pointer is obtained using the “*” operator (this is called dereferencing the pointer). Thus, *px refers to the value of x.

C allows us to perform arithmetic operations using pointers, but beware that the “unit” in pointer arithmetic is the size (in bytes) of the object to which the pointer points. For example, if px is a pointer to a variable x of type float, then the expression px + 1 refers not to the next bit or byte in memory but to the location of the next float after x (4 bytes away on most workstations); if x were of type double, then px + 1 would refer to a location 8 bytes (the size of a double)away, and so on. Only if x is of type char will px + 1 actually refer to the next byte in memory.

Thus, in

    char* pc;
    float* px;
    float x;

    x = 6.5;
    px = &x;
    pc = (char*) px;

(the (char*) in the last line is a “cast”, which converts one data type to another), px and pc both point to the same location in memory–the address of x–but px + 1 and pc + 1 point to different memory locations.Looks easy huh? But As far I know, Security is a major concern for pointers..

Happy Hacking!!!

Advertisements

Make a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

3 Responses to “All I wanted is to speak about pointers..”

RSS Feed for Ganesh Scribbles… Comments RSS Feed

good work ganesh,its lik explaination by the
founder of C da,why dont u try out ure hand in
writin a book on C and pointers da.it wil be
very helpful to others ……….

Thanks da.. But over exagerration,you and I know that we are frds. Yet, others feel as other way around.

Writing are really cool( for those who know it) and as well as boring( for me). Anyhow, thanks..

very interesting.
i’m adding in RSS Reader


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

%d bloggers like this: