Escolar Documentos
Profissional Documentos
Cultura Documentos
Topics
9.1 Getting the Address of a Variable 9.2 Pointer Variables 9.3 The Relationship Between Arrays and Pointers 9.4 Pointer Arithmetic 9.5 Initializing Pointers
Chapter 9 slide 2
Topics
9.6 9.7 9.8 9.9 Comparing Pointers Pointers as Function Parameters Dynamic Memory Allocation Returning Pointers from Functions
Chapter 9 slide 3
Pointer Variables
Definition:
int *intptr;
Read as: intptr can hold the address of an int Spacing in definition does not matter:
int * intptr; int* intptr;
Chapter 9 slide 6
Pointer Variables
Assignment:
int *intptr; intptr = #
Memory layout:
num
intptr
25
address of num: 0x4a00
0x4a00
11
Pointers in Expressions
Given:
int vals[]={4,7,11}, *valptr; valptr = vals;
Array Access
Array elements can be accessed in many ways:
Array access method array name and [] pointer to array and [] Example vals[2] = 17; valptr[2] = 17;
array name and subscript *(vals + 2) = 17; arithmetic *(valptr + 2) = 17; pointer to array and subscript arithmetic
Chapter 9 slide 11
Array Access
Conversion: vals[i] is equivalent to *(vals + i)
No bounds checking performed on array access, whether using array name or a pointer
Chapter 9 slide 12
Example
int vals[]={4,7,11}; int *valptr = vals; valptr++; // points at 7 valptr--; // now points at 4 cout << *(valptr + 2); // 11 valptr = vals; // points at 4 valptr += 2; // points at 11 cout << valptrval; // difference //(number of ints) between valptr // and val
Chapter 9 slide 13
A pointer can be parameter Works like reference variable to allow change to argument from within function Requires:
1) asterisk * on parameter in prototype and heading void getNum(int*); // function prototype void getNum(int *ptr) // function header // ptr is pointer to an int 2) asterisk * in body to dereference the pointer cin >> *ptr; 3) address as argument to the function getNum(&num); // pass address of num to getNum
Chapter 9 slide 16
Chapter 9 slide 20
Function must not return a pointer to a local variable in the function Function should only return a pointer:
to data that was passed to the function as an argument to dynamically allocated memory
Chapter 9 slide 21
Standard Version of