Title: Pointer in C++
1POINTERS IN C
POINTERS IN C
2 Present by -
Suraj R. Maurya
3- Topics
- All About Pointers
- Definition
- Declaring Pointer Variable
- (Address of Operator)
- (Value of or Indirection Operator)
- Pointers Type
- Pointer Arithmetic
- Pass by Pointer in function
4- Array of Pointer
- String of Pointer
- Object of Pointer
- this Pointer
- Advantages of Pointer
- Limitations of Pointer
5Computer Memory
- Each variable is assigned a memory slot (the size
depends on the data type) and the variables data
is stored there - Eg int a100
Memory address
1024
1032
1020
100
1024
A
Variable as value, i.e., 100, is stored at
memory location 1024
6- Every byte in computer memory has an address.
- Addresses are numbers just like house numbers.
- Addresses start from 0 and go up as 1, 2, 3.e.g.
in 640 KB memory addresses will be 0 to 655359
I.e., (640 X 1024)-1. - The moment a variable is declared, memory is
allocated in the RAM for its storage. int X100. - A variable in the RAM can be accessed only if you
know its address.
7Definition
- A pointer is a variable which store the memory
address of another variable. - It supports dynamic memory allocation routines.
- A pointer variable and normal variable is always
same data type.
8Declaration And Initialization Of Pointer
Variable
- Syntax
- Datatype variable_name
- eg. int x float y char z
- Address of operator()- it is a unary operator
that returns the memory address of its operand.
Here the operand is a normal variable. - Ptr_namevariable_name
9- eg. int x 10
- int ptr
- ptr x
- Now ptr will contain address
- where the variable x is stored
- in memory
10(Value of or Indirection Operator)
- It is a unary operator that returns the value
stored at the address pointed to by the pointer. - Here the operand is a pointer variable.
- eg.
- int x 10
- int ptr x
- coutltlt ptr// address stored at ptr will be
displayed - coutltltptr// value pointed to by ptr will be
displayed - Now ptr can also be used to change/display the
value of x. -
11Pointers Type
12 13Pointer Arithmetic
- Two arithmetic operations, addition and
subtraction, may be performed on pointers. When
we add 1 to a pointer, we are actually adding the
size of data type in bytes, the pointer is
pointing at. - For e.g. int x x
- If current address of x is 1000, then x
statement will increase x by 2(size of int data
type) and makes it 1002, not 1001. -
14- Consider p1 and p2 as pointers
- P1ap2b
- The arithmethic operations that can be performed
on p1 and p2 are summarized in the table below
15Pointer Expressions
- A Pointer expression contains pointer variable
- as an operand and arithmetic operator such
- as ,-,,/
- Eg (p1) This statement increments value,
stored at the memory address pointed by pointer
p1 by 1.
16Pass by Pointer in function
- Consider the program of swapping two
variables with the help of pointers - includeltiostream.hgt
- void swap(int m, int n)
- int temp temp m m n n temp
- void main()
- int a 5, b 6
- cout ltlt \n Value of a ltlt a ltlt and b ltlt
b - swap(a, b)
- cout ltlt \n After swapping value of a ltlt a ltlt
and b ltlt b -
-
17COMPARING PASS BY VALUE, PASS BY REFERENCE AND
PASS BY POINTER
PASS BY VALUE PASS BY REFERENCE PASS BY POINTER
Separate memory is allocated to formal parameters. Formal and actual parameters share the same memory space. Formal parameters contain the address of actual parameters.
Changes done in formal parameters are not reflected in actual parameters. Changes done in formal parameters are reflected in actual parameters. Changes done in formal parameters are reflected in actual parameters.
For eg. void cube(int x) x xxx void main() int y10 coutltltyltltendl cube(y) coutltltyltltendl output 1010 For eg. void cube(int x) x xxx void main() int y10 coutltltyltltendl cube(y) coutltltyltltendl output 101000 For eg. void cube(int x) x (x)(x)(x) void main() int y10 coutltltyltltendl cube(y) coutltltyltltendl output 101000
18Array of Pointer
- Array is collection of similar data type.
- We can create pointer variable with array both
are similar data type. - Using array of pointer searching, insertion,
deletion etc. operation we can perform. - Syntax
- Data_type variable_namesize of array
- Data_type pointer_variable
- pointer_variablevariable_name
- OR
- pointer_variablevariable_name0
19- Example of pointer of array
-
- Void main()
-
- int a2,ptr
- Ptra0
- CoutltltPtr ltltptr
- Ptr
20String of Pointer
- Array of character is called string.
- We can create pointer variable with string both
are similar data type. - Using string of pointer searching, finding length
, comparisons ,concatenation ,reverse etc
operation we can perform. - Syntax
- Data_type variable_namesize of string
- Data_type pointer_variable
- Pointer_variablevariable_name0
21- Example of string of pointer
- void main()
-
- Char name4NEEL,ptr
- Ptrname0
- While(ptr!\0)
-
- Ptr
- Coutltltptr
-
-
22Object of Pointer
- When address of an object of a class is stored
into the pointer variable of the same class type
then it is pointer of object. - This pointer can be used to access the data
member and member function of same class. -
23Syntax
- Class_name object_name
- Class_name pointer_variable
- Pointer_variableobject_name
- Pointer_variable-gtfunction_name()
24Example of pointer to object
- //create a class syco
- //and declare data member and function
- //Now, in main function
- Syco obj
- Syco ptr
- Ptrobj
- Obj-gtgetdtat()
- Obj-gtputdata()
25this Pointer
- C uses a unique keyword called this to
represent an object that invokes a member
function. - This is a pointer that points to the object for
which this function was called. - This is a unique pointer is automatically passed
to a member function when it is called. - The pointer this acts as an implicit argument to
all the member function. - its an in-built pointer so programmer doesnt
need to explicitly create this pointer.
26- One class can have exactly one this pointer.
- Syntax
- There are two ways of accessing member with
this pointer as follows - this-gtdata_member
- this-gtmember_function()
- OR
- this(dtat_member)
27Example of this pointer
- Class abc
- Int a
- Public
- Void getdata()
-
-
- The private variable a can be used directly
inside a member function, like a123 - But in this concept(in main function) to do same
job - This-gta123
- This -gtgetdata()
28Advantages of Pointer
- Pointer can handle array more efficiently.
- As they provide direct access to memory, they
process data very fast. - They reduce storage space.
- They give alternate way to access elements of an
array. - Pointers avoid any confusion by the compiler due
to variables with same name. - They help in building complex data structures
like linked list , stacks , queues , trees ,
graphs etc.
29Limitations of Pointer
- They are slower than normal variables.
- Pointers store only address but cannot store a
value. - It requires a null pointer reference.
- If a pointer is initialized with incorrect value
, it can lead to a garbage value which may cause
error in the program.