You are on page 1of 12

AdvancedProgrammingLanguage:Pointers

Pointers
isthememoryaddressofavariable.

Syntax:

Type_Name*Pointer_1,*Pointer_2,...,*Pojnter_n;

Declaringapointerisjustlikedeclaringanordinaryvariableofacertaintype.
int*p1,*p2,v1,v2;
p1andp2arepointers
v1andv2arevariable

Table:declaringpointervariable
Declaration Description
int*p;
pointerthatpointstoavariableoftypeint
float*p;
pointerthatpointstoavariableoftypefloat
double*p;
pointerthatpointstoavariableoftypedouble
MyType*p; pointerthatpointstoavariableoftypeMyTypeClass

&symbol

usedtodeterminetheaddressofavariable.

int*p,v;
//setthevariablepequaltoapointerthatpointstothevariablev
p=&v;
*p=10;//Dereference

Output
SourceCode:

RMDA

Page1

AdvancedProgrammingLanguage:Pointers

The*operatorinfrontofapointervariableproducesthevariabletowhichitpoints.Whenusedthis
way,the*operatoriscalledthedereferencingoperator.

The&infrontofanordinaryvariableproducestheaddressofthatvariable;thatis,itproducesapointer
thatpointstothevariable.The&operatorissimplycalledtheaddressofoperator.

Useofassignmentoperatorwithpointervariables

after:
before:
p1=p2;

*p1=*p2;

before:

after:

RMDA

Page2

AdvancedProgrammingLanguage:Pointers

SourceCode:

Output:

Illustration:

RMDA

Page3

AdvancedProgrammingLanguage:Pointers

new

Sinceapointercanbeusedtorefertoavariable,yourprogramcanmanipulatevariablesevenif
thevariableshavenoidentifierstonamethem.

Thenewoperatorcreatesanewdynamicvariableofaspecifiedtypeandreturnsapointerthat
pointstothisnewvariable.

example:

p1=newint;

Thisnew,namelessvariablecanbereferredtoas*p1(thatis,asthevariablepointedbyp1)

SourceCode:

Output:

RMDA

Page4

AdvancedProgrammingLanguage:Pointers

Illustration:

heap(freestore)

Itisaspecialareaofmemorythatisreservedfordynamicallyallocatedvariables.Anynew
dynamicvariablecreatedbyaprogramconsumessomeofthememoryinthefreestore.Iftherewas
insufficientavailablememorytocreatethenewvariable,thennewreturnedaspecialvaluenamed
NULL.

delete

operatoreliminatesadynamicvariableandreturnsthememorythatthedynamicvariable
occupiedtothefreestoremanagersothatthememorycanbereused.Whenyouapplydeletetoa
pointervariable,thedynamicvariabletowhichitispointingisdestroyed.Atthatpoint,thevalueofthe
pointervariableisundefined,whichmeansthatyoudonotknowwhereitispointing.Ifpointervariable
pointingtothedynamicvariablethatwasdestroyedandbecomesundefinediscalleddanglingpointers.

TypeDefinitions

Youcanassignanamedefinitionandthenusethetypenametodeclarevariablesusingtypedef
keyword.

Syntax:

typedefknown_type_definitionNew_Type_Name;

RMDA

Page5

AdvancedProgrammingLanguage:Pointers

SourceCode:

Output:

PointersasCallbyValue

SourceCode:

Output:

RMDA

Page6

AdvancedProgrammingLanguage:Pointers

DynamicArrays(Dynamicallyallocatedarray)

Isanarraywhosesizeisnotspecifiedwhenyouwritetheprogram,butisdeterminedwhilethe
programisrunning.

inta[10];
int*p;

legal:
p=a;
illegal:

a=p;

anarrayvariableisnotoftypeint*,butitstypeisaconstversionofint*.Anarrayvariable,like
a,isapointervariablewiththemodifierconst,whichmeansthatitsvaluecannotbechanged.

SourceCode:
Output:

RMDA

Page7

AdvancedProgrammingLanguage:Pointers

SourceCode:

RMDA

Page8

AdvancedProgrammingLanguage:Pointers

Output:
Case1:

Case2:

SourceCode:

Output:

RMDA

Page9

AdvancedProgrammingLanguage:Pointers

PointerArithmetic

typedefdouble*DoublePtr
DoublePtrd;
d=newdouble[10];

dcontainstheaddressoftheindexedvariabled[0].Theexpressiond+1evaluatestotheaddressof
d[1],d+2istheaddressofd[2],andsoforth.

for(inti=0;i<arraysize;i++)

cout<<*(d+1)<<;

isequivalentto

for(inti=0;i<arraysize;i++)

cout<<d[i]<<;

SourceCode:
Output:

RMDA

Page10

AdvancedProgrammingLanguage:Pointers

MultidimensionalArray

Output:

RMDA

Page11

AdvancedProgrammingLanguage:Pointers

RaggedArray

Isamultidimensionalarrayinwhichtherowshavedifferentlengthsoranarrayofpointers
whoseelementsareusedtopointtoarraysofvaryingsizes.

Example
SourceCode:

Output:

Discussion:

Theidentifieraisanarray,eachofwhoseelementsisanarrayof15chars.Thusa[0]anda[1]
arearraysof15chars.Theidentifierpisaonedimensionalarrayofpointerstochar.Theelementp[0]is
initializedtopointatabc:,astringthatrequiresspacefor5chars.Theelementp[1]isinitializedto
pointataisforapple,astringthatrequiresspacefor15chars,includingthenull\0attheendofthe
string.Thuspdoesitsworkinlessspacethana.

RMDA

Page12

You might also like