C and C++ Pointers and Addresses: Yes, you too can learn...
Posted: Tue Sep 13, 2005 8:22 am
BB
Regular
Joined: Jun 23, 2004
Posts: 340
In C and C++, nothing screws me up more than pointers and values and their notations on variables * and &.
Excerpt from
The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie
Chapter 5: Pointers and Arrays
Quote:
A pointer is a variable that contains the address of a variable. Pointers are much used in C, partly because they are sometimes the only way to express a computation, and partly because they usually lead to more compact and efficient code than can be obtained in other ways. Pointers and arrays are closely related; this chapter also explores this relationship and shows how to exploit it.
Pointers have been lumped with the goto statement as a marvelous way to create impossible to understand programs. This is certainly true when they are used carelessly, and it is easy to create pointers that point somewhere unexpected.
Pointers are like directions to somewhere...
Think of the house of one of your friends. That house has an address. That house also has some content, meaning, people live there.
So when you set a pointer, you set the directions for that house.
What is inside the house? Use * (asterisk) on your variable name.
What is the address of the house? Use & (ampersand) on your variable name.
Pointers need to "point" to somewhere valid. To reserve space to build a house, You need to buy that space. That is what malloc does, it just buys you some space.
If you give me an address for a house that is not there ... invalid
Example:
This is how you declare a pointer:
Code:
house* direction;
Let us buy a house. We need to buy space for the house:
Code:
direction = (house*)malloc(sizeof(house))
Wow... what was that?
The malloc (memoray allocate) reserves space, remember? The big question is, how much space? That is what sizeof tells it, the size of a house. The (house*) part is one you do not need to bother. Just substitute house with whatever variable type you need.
Now, Do you want to know what is inside of a house?
Code:
insideHouse = *house;
Do you want to know what is the address of that new house?
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest (c) 2006 by Group29 Productions.
You can syndicate Group29 Productions news with an RSS Feeder using the file backend.php