I always know that when I'm running a
C Course, the concept of pointers will be one of the more difficult elements for some of the delegates to grasp. No big deal, I can explain them in a number of ways, provide examples from different angle, and we'll be over the hiccough in progress in not too long a time. Pointers provide an exceptionally powerful capability, but C's an old language now and they're not exactly newbie-friendly.
You have C's pointers available in C++, but you also have references ...
* A Pointer is a variable the contains the address of another variable.
* A Reference is an alternative name that's assigned to a variable.
Thus, when you use a pointer, you need to prefix it with a "*" to mean "contents of" and to set it, you need to prefix it with "&" to mean address off, and that's simply not necessary with a reference.
Here's a sample from our
C++ Course that displays data from an array using both the pointer way and the reference way:
int weights[] = {96,98,100,99,98,95};
for (int k=0; k < 6 ; k++) {
int &rWeight = weights[k];
int *pWeight = &weights[k];
cout << "rWeight " << rWeight << endl;
cout << "*pWeight " << *pWeight << endl << endl;
}
Do be careful - if you assign something to an existing reference, you're changing the value of the variable that it's aliased to and you're not making the reference point at something else .... but if you assign something to an existing pointer, you're changing what it points to.
(written 2006-07-10)
Associated topics are indexed under
C233 - C and C based languages - OO in C++ - beyond the basics [3979] Extended and Associated objects - what is the difference - C++ example - (2013-01-18)
[3811] Associated Classes - using objects of one class within another - (2012-07-21)
[3508] Destructor methods in C++ - a primer - (2011-11-05)
[3251] C++ - objects that are based on other objects, saving coding and adding robustness - (2011-04-17)
[3244] C and C++ - preprocess, compile, load, run - what each step is for - (2011-04-12)
[3142] Private and Public - and things between - (2011-01-22)
[3124] C++ - putting the language elements together into a program - (2011-01-08)
[3123] C++ objects - some short, single file demonstrations - (2011-01-07)
[3056] C++ - a complete example with polymorphism, and how to split it into project files - (2010-11-16)
[2845] Objects and Inheritance in C++ - an easy start - (2010-07-01)
[2577] Complete teaching example - C++, inheritance, polymorphism - (2010-01-15)
[1819] Calling base class constructors - (2008-10-03)
[1674] What a lot of files! (C++ / Polymorphism demo) - (2008-06-12)
[1572] C - structs and unions, C++ classes and polymorphism - (2008-03-13)
[1217] What are factory and singleton classes? - (2007-06-04)
[925] C++ - just beyond the basics. More you can do - (2006-11-14)
[831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
[801] Simple polymorphism example - C++ - (2006-07-14)
2504
Some other Articles
undefined reference to typeinfo - C++ error messageEffective web campaign?The case for exceptionsReferences and Pointers in C++Writing up new C / C++ notes.Busy day in MelkshamRemember a site's non-technical issues tooPerl delegate - much more than just a delegateThe Wilts and Berks Canal