c++ pointers are easy and fun to learn. some c++ tasks are performed more easily with pointers, and other c++ tasks, such as dynamic memory allocation, cannot be performed without them.
as you know every variable is a memory location and every memory location has its address defined which can be accessed using ampersand (&) operator which denotes an address in memory. consider the following which will print the address of the variables defined −
#include <iostream>
using namespace std;
int main () {
int var1;
char var2[10];
cout << "address of var1 variable: ";
cout << &var1 << endl;
cout << "address of var2 variable: ";
cout << &var2 << endl;
return 0;
}
when the above code is compiled and executed, it produces the following result −
address of var1 variable: 0xbfebd5c0 address of var2 variable: 0xbfebd5b6
what are pointers?
a pointer is a variable whose value is the address of another variable. like any variable or constant, you must declare a pointer before you can work with it. the general form of a pointer variable declaration is −
type *var-name;
here, type is the pointer's base type; it must be a valid c++ type and var-name is the name of the pointer variable. the asterisk you used to declare a pointer is the same asterisk that you use for multiplication. however, in this statement the asterisk is being used to designate a variable as a pointer. following are the valid pointer declaration −
int *ip; // pointer to an integer double *dp; // pointer to a double float *fp; // pointer to a float char *ch // pointer to character
the actual data type of the value of all pointers, whether integer, float, character, or otherwise, is the same, a long hexadecimal number that represents a memory address. the only difference between pointers of different data types is the data type of the variable or constant that the pointer points to.
using pointers in c++
there are few important operations, which we will do with the pointers very frequently. (a) we define a pointer variable. (b) assign the address of a variable to a pointer. (c) finally access the value at the address available in the pointer variable. this is done by using unary operator * that returns the value of the variable located at the address specified by its operand. following example makes use of these operations −
#include <iostream>
using namespace std;
int main () {
int var = 20; // actual variable declaration.
int *ip; // pointer variable
ip = &var; // store address of var in pointer variable
cout << "value of var variable: ";
cout << var << endl;
// print the address stored in ip pointer variable
cout << "address stored in ip variable: ";
cout << ip << endl;
// access the value at the address available in pointer
cout << "value of *ip variable: ";
cout << *ip << endl;
return 0;
}
when the above code is compiled and executed, it produces result something as follows −
value of var variable: 20 address stored in ip variable: 0xbfc601ac value of *ip variable: 20
pointers in c++
pointers have many but easy concepts and they are very important to c++ programming. there are following few important pointer concepts which should be clear to a c++ programmer −
| sr.no | concept & description |
|---|---|
| 1 |
null pointers
c++ supports null pointer, which is a constant with a value of zero defined in several standard libraries. |
| 2 |
pointer arithmetic
there are four arithmetic operators that can be used on pointers: ++, --, +, - |
| 3 |
pointers vs arrays
there is a close relationship between pointers and arrays. |
| 4 |
array of pointers
you can define arrays to hold a number of pointers. |
| 5 |
pointer to pointer
c++ allows you to have pointer on a pointer and so on. |
| 6 |
passing pointers to functions
passing an argument by reference or by address both enable the passed argument to be changed in the calling function by the called function. |
| 7 |
return pointer from functions
c++ allows a function to return a pointer to local variable, static variable and dynamically allocated memory as well. |