Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val;...

28
Pointer Review
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    262
  • download

    1

Transcript of Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val;...

Page 1: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Pointer Review

Page 2: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.
Page 3: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;}}

• Given a ordered linked list pointed to by head, write the code to insert an element with value x.

Page 4: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;}}

• Given a ordered linked list pointed to by head, write the code to delete an element with value x.

Page 5: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

What type is a *a **a

Page 6: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

What type is a *a **a

Hint: I read the declaration backwards, a is a pointer to a pointer to an int.

When I look at *a, I mentally glue the *atogether and thinkint * (*a)*a is a pointer to an int.

Page 7: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Fill in the blanks//find and return the maximum value in an arrayint maxEntry(int* data, int size) { if ( data == NULL || size <= 0 ) return INT_MIN; int *highSoFar =________________ ; for (int count = ______; count <size;______________ ) { if ( __________________________) highSoFar = __________________; }return _____________________; }

Page 8: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

int * p;int * q;

• What comparison would be true iff p and q have targets with the same value?

1) &p == &q2) *p == *q3) p == q

Page 9: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Student * p;Student * q;

• What comparison would be true iff p and q have the same target?

1) &p == &q2) *p == *q3) p == q

Page 10: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

int foo = 17;int *ptr = &foo;

• Which of the following statements will change the value of foo to 18?

1) ptr++;2) foo++;3) (*foo)++;4) (*ptr)++;

Page 11: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Both code fragments below will compile but the one on the right will (on most systems) cause a

runtime error. Why? Draw a picture to show what is happening.

int x = 5;int *p = new int(x);delete p;

int x = 5;int *p = &x;delete p;

Page 12: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

const int size = 5;int *a = new int[size];• What code fragment could be

inserted in the blank in order to safely initialize each element of A to zero?

int* p = &a[0];for (int i = 0; i< size; i++, p++) { _____________________;}

1) *a = 0;2) a[i] = 0;3) *p = 0;4) *i= 0;

Page 13: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Definitions

• 1) A dangling pointer is a pointer whose value is the address of memory that the program does not own.

• 2) A memory leak is when the program owns memory that it can no longer access.

Page 14: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

const int size = 5;int *a = new int[size];• What logical error(s) would

result if the following statement were executed?

a= new int[2*size];

1) A dangling pointer would result2) A memory leak would result3) Both a dangling pointer and a memory leak would result.4) None of the above

Page 15: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

const int size = 5;int *a = new int[size];int* p = &a[0];

• What logical error(s) would result if the following statement were executed:

delete [] p;

1) A dangling pointer would result2) A memory leak would result3) Both a dangling pointer and a memory leak would result.4) None of the above

Page 16: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executing• p->next = q;

Page 17: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executingq->next = p->next;p->next = NULL;

Page 18: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executingq->next = p->next;q->next->next = p;p->next = NULL;

Page 19: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executing• q->next = NULL;• delete p;

Page 20: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executing• delete (p->next);

Page 21: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executing• q->next = head;• delete p;

Page 22: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Show the picture after executing• delete Head;• head = q;

Page 23: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

• Given the following, explain the effect of the following on the contents of ptr and i:

int i = 10,;int *ptr = &iint j = 4;*ptr += j;

Page 24: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Given the following declarationsint a[] = {5, 15, 34, 54, 14, 2, 52, 72};int *p = &a[1];int *q = &a[5];

• What is the value of *(p+3)?

Page 25: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Given the following declarationsint a[] = {5, 15, 34, 54, 14, 2, 52, 72};int *p = &a[1];int *q = &a[5];

• What is the value of *(q-3)?

Page 26: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Given the following declarationsint a[] = {5, 15, 34, 54, 14, 2, 52, 72};int *p = &a[1];int *q = &a[5];

• What is the value of q – p ?

Page 27: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Given the following declarationsint a[] = {5, 15, 34, 54, 14, 2, 52, 72};int *p = &a[1];int *q = &a[5];

• Is the condition p < q true or false?

Page 28: Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.

Given the following declarationsint a[] = {5, 15, 34, 54, 14, 2, 52, 72};int *p = &a[1];int *q = &a[5];

• Is the condition *p < *q true or false?