The document discusses the concept of pointers in programming, explaining that a pointer is a variable that holds the memory address of another object. It covers types of pointers, pointer arithmetic, comparisons, and benefits such as improved efficiency and dynamic memory allocation. Additionally, it mentions the use of function pointers and their applications in programming.
Pointer
• A variablethat holds a memory address.
• This address is the location of another object
in the memory.
• Pointer as an address indicates where to find
an object.
Not all pointers actually contain an address
example NULL pointer.
Value of NULL pointer is 0.
10/19/2015
3.
• Pointer canhave three kinds of content in it
1) The address of an object, which can be
dereferenced.
2) A NULL pointer.
3) Invalid content, which does not point to an
object.
(If p does not hold a valid value, it can crash the
program)
• If p is a pointer to integer, then
– Int *p
4.
It is possiblein some environments to have
multiple pointer values with different
representations that point to same location in
memory.
But make sure if the memory is deleted using
delete or if original variable goes out of scope.
5.
Declaring pointer
Data-type *name;
*is a unary operator, also called as indirection
operator.
Data-type is the type of object which the
pointer is pointing.
Any type of pointer can point to anywhere in
the memory.
* is used to declare a pointer and also to
dereference a pointer.
6.
When you writeint *,
compiler assumes that any address that it
holds points to an integer type.
m= &count;
it means memory address of count variable is
stored into m.
& is unary operator that returns the memory
address.
i.e. & (orally called as ampersand) is returning
the address.
so it means m receives the address of count.
7.
Suppose, count usesmemory
Address 2000 to store its value 100.
so, m=&count means m has 2000
address.
q= *m
it returns the value at address m.
value at address 2000 is 100.
so, q will return value 100.
i.e. q receives the value at address m.
count=1002000
8.
Address-of operator(&)
• Itis used to reference the memory address of
a variable.
• When we declare a variable, 3 things happen
– Computer memory is set aside for variable
– Variable name is linked to that location in memory
– Value of variable is placed into the memory that
was set aside.
9.
Int *ptr;
declaring variableptr which holds the value
at address of int type
int val =1;
assigning int the literal value of 1
ptr=&val;
dereference and get value at address stored in
ptr
int deref =*ptr
printf(“%dn”, deref);
Output will be 1
10.
Pointer Conversions
• Onetype of pointer can be converted to
another type of pointer.
• int main() {
double x=100.1, y;
int *p;
p= (int *) &x; //explicit type conversion
y= *p;
}
11.
Generic Pointer
void *pointer is called as generic pointer.
Can’t convert void *pointer to another pointer
and vice-versa.
void *pointer can be assigned to any other
type of pointer.
void * is used to specify a pointer whose base
type is unknown.
It is capable of receiving any type of pointer
argument without reporting any type of
mismatch.
12.
Pointer Arithmetic
• Thereare only two arithmetic operations that
can be used on pointers
– Addition
– Subtraction
• To understand this concept, lets p1 be an
integer pointer with value 2000 address.
– int is of 2 bytes
– After expression p1++;
– P1 contains address 2002 not 2001.
13.
• Each timep1 is incremented, it will point to
next integer.
• The same is true for decrement.
– for p1--;
– Causes value of p1 to be 1998.
• Each time a pointer is incremented, it points
to the memory location of the next element of
its base type.
• If decremented, then it points to previous
element location.
• P1=p1+12; makes p1 points to 12th element of
p1 type.
14.
Arithmetic Rules
• Youcannot multiply or divide pointers.
• You cannot add or subtract two pointers.
• You cannot apply bitwise operators to them.
• You cannot add or subtract type float or
double to or from pointers.
15.
Pointer Comparison
• Youcan compare two pointers in a relational
expression, example:
if(p<q)
printf(“p points to lower memory than q n”);
• Pointer comparison are useful only when two
pointers point to a common object such as an
array.
16.
Benefits of pointer
•Pointers are used in situations when passing actual values is
difficult or not desired.
• To return more than one value from a function.
• They increase the execution speed.
• The pointer are more efficient in handling the data types .
• Pointers reduce the length and complexity of a program.
17.
• The useof a pointer array to character string results in
saving of data.
• To allocate memory and access it( Dynamic memory
Allocation).
• Implementing linked lists, trees graphs and many other data
structure.
18.
How to getaddress of a function
/*A program to get address of a function */
#include<stdio.h>
void main()
{
void show(); /* usual way of invoking a function */
printf(“ The address of show function is=%u”, show);
}
void show()
{
printf(“ welcome to HPES!!”)
}
19.
Uses of pointerto function
• Pointers are certainly awkward and off-putting and thus
this feature of pointer is used for invoking a function
• There are several possible uses :
(a) In writing memory resident program.
(b) In writing viruses, or vaccines to
remove the viruses.
(c) In developing COM/DCOM component
(d) In VC++ programming to connect events to
function calls.