13
LAB#3 Pointers

Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

Embed Size (px)

Citation preview

Page 1: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

LAB#3Pointers

Page 2: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

andy = 25;fred = andy;ted = &andy;

Reference operator (&) "address of"

Page 3: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

andy = 25;ted = &andy;beth = *ted;

Deference operator (*) "value pointed by"

Page 4: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

int * numberPtr;char * characterPtr;float * greatnumberPtr;int * mPtr, * nPtr, *j;

Declaring variables of pointer types

Page 5: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

int main () {

int firstvalue, secondvalue;int * mypointer; mypointer = &firstvalue;*mypointer = 10;mypointer = &secondvalue;*mypointer = 20;cout << "firstvalue is " << firstvalue << endl;cout << "secondvalue is " << secondvalue << endl; return 0;

}

Ex1: Trace the code below

firstvalue is 10secondvalue is 20

Page 6: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

int main (){int firstvalue = 5, secondvalue = 15;int * p1, * p2;p1 = &firstvalue; //p1 = address of firstvalue p2 = &secondvalue; //p2 = address of secondvalue*p1 = 10; //value pointed by p1 = 10 *p2 = *p1; //value pointed by p2=value pointed by p1p1 = p2; // p1 = p2 (value of pointer is copied) *p1 = 20; // value pointed by p1 = 20 cout << "firstvalue is " << firstvalue << endl; cout <<"secondvalue is " << secondvalue << endl; return 0;}

Ex2: Trace the code below

firstvalue is 10secondvalue is 20

Page 7: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

int main (){int numbers[5];int * p;p = numbers; *p = 10;p++; *p = 20;p = &numbers[2]; *p = 30;p = numbers + 3; *p = 40;p = numbers; *(p+4) = 50;for (int n=0; n<5; n++)cout << numbers[n] << ", ";

return 0;}

Ex3: Pointers and Arrays (Trace)

10, 20, 30, 40, 50,

Page 8: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

Pointer to specific address:int number;int *tommy = &number;

Pointer to nothingint *tommy = NULL; equivalents to

int *tommy = 0;

Pointer initialiazation

Page 9: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

Strings as pointer to characterschar * terry = "hello";

The fifth element can be accessed with: *(terry+4) or terry[4]

Pointer initialiazation

Page 10: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

Suppose the following piece of code:char *mychar;short *myshort;long *mylong;mychar++;myshort++;mylong++;

(++) and (--) operators have greater operator precedence than the dereference operator (*).

Pointer Arthematic

Page 11: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

void main (){int a = 50;int *aptr ;aptr = &a;// assume that aptr=0x0018FF44cout <<"The output of a= "<<a << "\n";cout <<"The output of *aptr = "<<*aptr << "\n";cout <<"The output of &a= "<<&a << "\n";cout <<"The output of &*aptr = "<<&*aptr << "\

n";cout <<"The output of *&aptr = "<<*&aptr << "\

n";}

Ex4: What is the output

Page 12: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

Ex5: Find the Errors

Page 13: Pointers. andy = 25; fred = andy; ted = &andy; andy = 25; ted = &andy; beth = *ted;

Write a C++ program that defines array b with 10 integer elements. Then the program should use pointers to set each element in the array to ZERO.

Ex6: Coding