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

Preview:

Citation preview

LAB#3Pointers

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

Reference operator (&) "address of"

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

Deference operator (*) "value pointed by"

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

Declaring variables of pointer types

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

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

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,

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

Pointer to nothingint *tommy = NULL; equivalents to

int *tommy = 0;

Pointer initialiazation

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

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

Pointer initialiazation

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

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

Ex5: Find the Errors

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

Recommended