0% found this document useful (0 votes)
50 views17 pages

Cs112 - Programming Fundamental: Lecture # 38 - Pointers in C Syed Shahrooz Shamim

This document discusses pointers in C programming. It defines pointers as variables that hold memory addresses and explains that pointers can point to objects in memory. It also describes declaring and dereferencing pointers, using the address-of and indirection operators, pointer arithmetic, comparing pointers, and benefits of using pointers such as increased execution speed and implementing data structures.

Uploaded by

Ghazan Aqeel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views17 pages

Cs112 - Programming Fundamental: Lecture # 38 - Pointers in C Syed Shahrooz Shamim

This document discusses pointers in C programming. It defines pointers as variables that hold memory addresses and explains that pointers can point to objects in memory. It also describes declaring and dereferencing pointers, using the address-of and indirection operators, pointer arithmetic, comparing pointers, and benefits of using pointers such as increased execution speed and implementing data structures.

Uploaded by

Ghazan Aqeel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 17

CS112 - PROGRAMMING FUNDAMENTAL

Lecture # 38 – Pointers in C
Syed Shahrooz Shamim
Junior Lecturer,
CS Department, UIT
Pointer
• A variable that 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.
Pointer
• Pointer can have 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
Pointer
 It is possible in 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.
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.
Declaring pointer
 When you write int *,
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.
Declaring pointer
 Suppose, count uses memory
Address 2000 to store its value 100.
so, m=&count means m has 2000
address.
 q= *m 2000 count=100
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.
Address-of operator(&)
• It is 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.
Address-of operator(&)
 Int *ptr;
declaring variable ptr 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(“%d\n”, deref);
Output will be 1
Pointer Conversions
• One type 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;
}
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.
Pointer Arithmetic
• There are 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.
Pointer Arithmetic
• Each time p1 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.
Arithmetic Rules
• You cannot 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.
Pointer Comparison
• You can 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.
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.
Benefits of pointer
• The use of 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.

You might also like