new ppt sahi
Post on 03-Apr-2015
126 Views
Preview:
TRANSCRIPT
© 2
010
Tie
to C
orpo
ratio
n
Pointers in C
Group Members:
Kavitha SreekumarNitin Chavan (GL)Sahitya GollapalliVinay Mandge
© 2010 Tieto Corporation
Contents
• Introduction to Pointer
• Pointer advantages
• Declaration of Pointers
• Pointer Arithmetic
• Pointers to Arrays and strings
• Pointers and Structures
• Pointers to functions
• Some issues with pointers
2010-03-262
© 2010 Tieto Corporation
Introduction to Pointer ?
• Derived data type
• “A pointer is a variable, which contains the address of
another variable.”
• In other words:
- A variable that holds Memory Address rather than its
content.
3 2010-03-26
© 2010 Tieto Corporation 2011-01-124
Memory Cell
0
1
.
.
.
2
Quantity Variable
150 Value
4500 Address
Representation of variable
Memory OrganisationAddress
© 2010 Tieto Corporation
Pointer advantages
• To point to different data structures.• To achieve clarity and simplicity.• More compact and efficient coding.• To return multiple values via functions.• Dynamic memory allocation.
5 2010-03-26
• Variable name must be preceded by Asterisk (*)
• Should have some data type
• E.g.:-
• Declaration :-
int *ptr; // indicates ptr is pointer to an integer variable.
• Initialize :-
ptr= &x; // ptr is pointing to x.
2010-03-26
Declaration of Pointers
Use of & and *• • When is & used?
• • When is * used?
• • & -- "address operator" which gives or producesthe memory address of a data variable.
• * -- "dereferencing operator" which provides thecontents in the memory location specified by aPointer.
2010-03-26
2010-03-26
Pointer Arithmetic
• Operations such as Increment & Decrement.
• Ptr++ ; // Points to next memory location.
• E.g.:-
# include <stdio.h>
char movie[] =“Jurassic park”;
main()
{
char *ptr;
ptr=movie;
printf(“%s”,movie);
printf(“%s”,ptr);
ptr++;
printf(“%s”,movie);
printf(“%s”,ptr);
}
• Declaration :
int x[5] = { 1, 2, 3, 4, 5};
int *nptr ;
nptr = &x[0]; // Points to address location 1000.
2010-03-26
Pointer and Array
X[0] X[1] X[2] X[3] X[4]
1 2 3 4 5
1000 1002 1004 1006 1008
Elements
Values
Address
Base address
Pointers to Array • Declaration : int *nptr ; nptr = number[0] ; or nptr = number ;
2010-03-2610
1 2 3 4 5
1000 1002 1004 1006 1008
X[0] X[1] X[2] X[3] X[4]index
value
address
nptr
Array of Pointers (Ragged arrays)• Declaration : char *name[3] = { “New Zealand” , “Australia” , “India” , }
2010-03-2611
name[0]
name[1]
name[2]
New Zealand
Australia
India
Pointers to String
• Declaration :
char *str = “good” ;
2010-03-2612
G O O D \0
str
Example : char *cptr = name ;
int length ;
while (*cptr != ‘\0’) ;
length = cptr – name;
© 2010 Tieto Corporation
Pointers to functions
© 2010 Tieto Corporation
Pointers and Functions
14 2010-03-26
• Pointers can be used to pass addresses of variables to called functions, thus allowing the called function to alter the values stored there.This is known as "call by reference" since we are referencing the variables.
• As shown swap function modified from a "call by value" to a "call by reference". Note that the values are now actually swapped when the control is returned to main function.
© 2010 Tieto Corporation
Pointers with Functions (example)
15 2010-03-26
#include <stdio.h>void swap ( int a, int b ) ;int main ( ){ int a = 5, b = 6; printf("a=%d b=%d\n",a,b) ; swap (a, b) ; printf("a=%d b=%d\n",a,b) ; return 0 ;}
void swap( int a, int b ){ int temp; temp= a; a= b; b = temp ; printf ("a=%d b=%d\n", a, b);}Results:
a=5 b=6a=6 b=5a=5 b=6
© 2010 Tieto Corporation
Pointer to a function
16 2010-03-26
• Pointer to function are the pointers which have the ability to call the function pointed to by them. As the ordinary pointers take the address of variable and can change the value pointed by them, the function pointer almost does the same.
• example• #include <stdio.h>
#include <conio.h>int mul(int a, int b, int c) { return a*b*c;}void main() { int (*function_pointer)(int, int, int); function_pointer = mul; printf("The product of three numbers is:%d", function_pointer(2, 3, 4)); getch();}
© 2010 Tieto Corporation
Pointers and structures
17 2010-03-26
© 2010 Tieto Corporation
Pointers to Structures • We declare pointers to structures the same way we declare
any other pointers: by preceding the variable name with an asterisk in the declaration. We could declare two pointers to struct complex with
• struct complex *p1, *p2; And, as before, we could set these pointers to point to actual variables of type complex:
• p1 = &c2; p2 = &c3; Then, • *p1 = *p2 would copy the structure pointed to by p2 to
the structure pointed to by p1 (i.e. c3 to c2), and • p1 = p2would set p1 to point wherever p2 points.
© 2010 Tieto Corporation
Some issues with pointers
advantages and disadvantages
• Pros efficiency convenience• Cons error prone difficult to debug
2010-03-2620when not to use pointers?
References• Programming in ANSI c by E Balaguruswamy.
• need pointers in c ebook by yashwant kanetkar.
2010-03-26
© 2
010
Tie
to C
orpo
ratio
n
Thank You
top related