Download presentation
Presentation is loading. Please wait.
Published byAllan Dickerson Modified over 9 years ago
1
Chapter 11 – Pointer Variables
2
Declaring a Pointer Variable u Declared with data type, * and identifier type* pointer_variable; u * follows data type –Usually no space between so more obvious –Space allowed, so 1 or more would still work u Reserves space for storage u Must initialize or assign address Lesson 11.1
3
Assigning an Address u Use the "address of" operator (&) u General form: pointer_variable = &ordinary_variable Lesson 11.1 Name of the pointerName of ordinary variable
4
Using a Pointer Variable u Can be used to access a value u Unary operator * used * pointer_variable –In executable statement, indicates value u Common practice to use suffix ptr for pointer variables –Example: width_ptr Lesson 11.1
5
Pointer Operators u Ampersand & –Address of u Asterisk * –Get value at the address Lesson 11.1
6
Uses of * u Binary multiplication operator volume = height * depth * width; u Declaration specifier indicating address to be stored in variable's memory cell double* height_address; u Unary operator indicating to get value or access memory cells at addressed *height_address = 10.5; Lesson 11.1
7
Uses of & u Declaration of function header to indicate a reference void function1 (double&) u In executable statement to indicate "address of" height_address = &height; Lesson 11.1
8
Spacing a * u Somewhat flexible in declaration or header double* height; double *height; double * height; Lesson 11.1 Confusing – looks like multiplication usage u For multiple pointer declarations double *height *width; double* height; double* width; or
9
Transferring Addresses to Functions u In declaration and header use type* in argument list type function (type*, type*); type funcName (type* name, type* name) u In function call use &variable in argument list to pass address identifier = funcName (&name1, &name2); Lesson 11.2
10
Using Pointer for Array Transfer Lesson 11.3 rtype function (type*, int); function (array, num); rtype function (type* b, int num_elem) { code using b with brackets (b[n]) } Declaration Call Header Function Body
11
Example: Lesson 11.3 void function2 (double*, int); int main ( ) { double c[5] = {2.1, 3.5, 6.4, 1.9, 4.5}; function2 ( c, 5); } void function2 (double* b, int num_elem) Name of array is address
12
Pointer Variables and Math u Declare variable as pointer double* b; –Holds address u Can perform addition and subtraction –Purpose of add is to advance to subsequent cell b + 1 (double is 8 bytes, so adds 8 bytes) –Subtraction goes back to previous memory cell b – 1 (goes back 8 bytes) Lesson 11.4
13
Returning Array Address from Function Lesson 11.5 Example: Function declaration and header double* get_array_address (double [ ] ); double* get_array_address (double c[ ] ) Now a return statement with variable that indicates address in the function body return c; double* Could also use
14
Pointer Variables u Point to 2, 4, or 8 bytes of memory depending on type of variable u Can point to entire array –Holds address of beginning of array –Pointer declaration indicates size of memory greater than single value Lesson 11.6
15
Creating Pointer to Arrays u Example: double (*f) [2]; Lesson 11.6 Declares f to be a pointer One dimensional array of size 2 Array elements of type double u Example: double (*h) [3] [5]; Declares h to be a pointer Two dimensional array of size 3 * 5 (15 elements) Array elements of type double ( ) are REQUIRED
16
typedef Statement u Used to create an alias for a data type –Note – not a new data type u Basic form typedef type synonym_1, synonym_n; Lesson 11.6 Any valid data type List of valid identifiers (any number)
17
Uses of typedef u Improve readability and understandability of the code u Easier to modify programs that are implementation dependent Lesson 11.6
18
Arrays and typedef u General form: typedef type name [size]; –type is the type of values in the array –name is the alias to be used as the data type in a declaration –size is array size Lesson 11.6
19
typedef for Pointer to Array u General form: typedef type (*name) [size]; –type is type of values in array –name is the alias to be used as data type in declaration –size is array size Lesson 11.6
20
Returning a Pointer u Given the example: typedef double (*array_ptr) [2]; –Creates alias array_ptr for declarations of pointers to 1-D arrays of double with size 2 u array_ptr function2 (argument); –Indicates pointer to 1-D array is returned from function Lesson 11.6
21
Multidimensional Arrays u C++ sees array of arrays u Example: int a[2] [3] [4]; –Can work with whole (or 1) array –Can use 2 arrays of [3] [4] –Can use 6 arrays of [4] –Can use 24 integers –Pointers: int (*b)[3] [4], (*c)[4], *d, a t Can assign addresses with & operator ( b = &a[0]; ) Lesson 11.6
22
Pointers to Objects u Special arrow operator -> –Negative and greater than symbol with no space between –Used to access members with object's address u Declaring pointer Class_name* ptr_name; u Initializing pointer ptr_name = &object_name; u Calling member function (2 argument example) ptr_name -> function_name (arg1, arg2) Lesson 11.7
23
Pointers as Data Members u General form class Class_name { private: type* pointer_name; public: type function_name ( ); }; Lesson 11.8 Name of the class Any valid data type including name of struct or class Name of member function
24
Dynamic Memory Allocation u Optimize memory space with new and delete operators –Reserve and unreserve memory while program is execution –Pointer variables important because operators work with addresses of memory reserved Lesson 11.9
25
new Operator u General form: new type [num_elements] –type is data type of array elements –num_elements is number of array elements u Reserves memory but does NOT fill with values –new returns address of memory it reserves –Value assigned to pointer variable of same type Lesson 11.9 type* array_address; array_address = new type [num];
26
delete Operator u General form: delete [ ] array_address; –array_address is pointer variable u Releases memory stored at address indicated u Knows size of memory reserved by new and releases memory for all the array u delete address; –deletes memory for single element Lesson 11.9
27
Summary u Declare and initialize pointer variables u Pass addresses to functions u Return an address from a function u Reserve memory during execution u Link classes with accessor functions Learned how to:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.