CyberArmy University | Open Source Institute | CyberArmy Intelligence & Security | CyberArmy Services & Projects

[C++] Practical C++ Part 9 : Pointers


[Reply] [View by Thread] [Help]
[Back To Article Discussion Forum]

Posted by Author Rae On 2007-04-29 11:21:20




View and vote on the article here: Practical C++ Part 9 : Pointers


Practical C++ Part 9 : Pointers

Category
C++
Summary
Body
Practical C++ Part 9 : Pointers
By Rae


This part of the "Practical C++" series deals with probably the most confusing aspect of C/C++ programming, that is, pointers. Pointers are variables that point to an area in memory. They do not contain actual data, but point to memory locations which hold the data.

To define a pointer, you just have to prefix an asterisk (*) before the variable name, for example,
int *ptr;
This will define a pointer 'ptr' which will hold the address of a memory location holding an integer number. Now suppose we have a integer number say 'num'. To make the pointer 'ptr' point to 'num', we have to write the following statement :-
ptr = #
The ampersand (&) sign should be read as 'the address of', and causes the address in memory of a variable to be returned, instead of the variable itself. Therefore now, 'ptr' starts pointing to the memory location of 'num'. The asterisk (*) should be read as 'the value pointed by'. So if, you directly want to change the value of 'num', you can do so with the help of the pointer 'ptr'. Just write,
*ptr = 8;
To get all these concepts clearer, we will now write the complete code :-
#include <iostream.h>

#include <conio.h>

void main()

{

    clrscr();
    int num;

    int *ptr;

    
    num = 5;

    ptr = &num;

    cout<<"The value is : "<<num<<endl;

    *ptr = 8;

    cout<<"The new value is : "<<num<<endl;

    getch();

}
The output of the above code will be :-

The value is : 5
The new value is : 8

For the advanced programmer, a conceptual understanding of pointers is absolutely essential. They form the basis of resizeable arrays, dynamic memory allocation concepts and all of data strucutres including linked lists, stacks and queues. To allocate memory dynamically in you program, use the follwing lines of code :-
int *ptr;
ptr = new int;
The keyword 'new' is used to initialize pointers with memory from free store. Thus 'ptr' now points to its own exclusive memory location, of the size of an 'int' data type. And at the end of the program, or whenever required, we must free up the memory we have allocated using 'new'. This is done using the keyword 'delete', as shown,
delete ptr;
Now at this point we have to be very careful about freeing the memory space. Always pass a valid pointer to 'delete', otherwise it may lead undesirable circumstances like crashing.

References :-

http://www.codeguru.com

Understanding Pointers in C by Yashvant Kanetkar

C++ : The Complete Reference by Herbert Schildt

Written by Rae

Written by rae

Edited by NeorageX


This article was imported from the CyberArmy University site. (original author: rae)


There are no replies to this post yet.



Guest:
Subject:
Message:
Signature:
Optional Image Link:
http://

CyberArmy::Forum v0.6
Generated In 0.00520 seconds


About Us | Privacy Policy | Mission Statement | Help