Lecture Programming in C++ - Chapter 11: Pointer variables

27 70 0
Lecture Programming in C++ - Chapter 11: Pointer variables

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

On completion of this chapter students will know how to: Declare and initialize pointer variables, pass addresses to functions, return an address from a function, reserve memory during execution, link classes with accessor functions.

Chapter 11 – Pointer Variables Declaring a Pointer Variable Declared with data type, * and identifier                type*  pointer_variable; * follows data type – Usually no space between so more obvious – Space allowed, so 1 or more would still work Reserves space for storage Must initialize or assign address Lesson 11.1 Assigning an Address Use the "address of" operator (&) General form:      pointer_variable = &ordinary_variable Name of the pointer Name of ordinary       variable Lesson 11.1 Using a Pointer Variable Can be used to access a value Unary operator * used      * pointer_variable – In executable statement, indicates value Common practice to use suffix ptr for  pointer variables – Example:  width_ptr Lesson 11.1 Pointer Operators Ampersand   & – Address of Asterisk   * – Get value at the address  Lesson 11.1 Uses of   * Binary multiplication operator        volume = height * depth * width; Declaration specifier indicating address to  be stored in variable's memory cell       double*  height_address; Unary operator indicating to get value or  access memory cells at addressed        *height_address = 10.5; Lesson 11.1 Uses of  & Declaration of function header to indicate a  reference                 void function1 (double&) In executable statement to indicate  "address of"                 height_address = &height; Lesson 11.1 Spacing a * Somewhat flexible in declaration or header                      double*  height; Confusing – looks like           double   *height; multiplication usage           double  *  height; For multiple pointer declarations     double  *height   *width; or double*  height; double*  width; Lesson 11.1 Transferring Addresses to Functions In declaration and header use type* in  argument list    type  function (type*, type*);    type  funcName (type* name, type* name) In function call use &variable in argument list  to pass address    identifier = funcName (&name1, &name2); Lesson 11.2 Using Pointer for Array Transfer rtype  function (type*, int); Declaration function (array, num); Call Header rtype function (type* b, int num_elem)                 { Function                 code using b with brackets (b[n]) Body                 } Lesson 11.3 Returning Array Address  from Function Example:  Function declaration and header     double*  get_array_address (double [ ] );  double*     double*  get_array_address (double c[ ] ) Could also use Now a return statement with variable that indicates address in the function body                      return c; Lesson 11.5 Pointer Variables Point to 2, 4, or 8 bytes of memory  depending on type of variable Can point to entire array – Holds address of beginning of array – Pointer declaration indicates size of memory  greater than single value Lesson 11.6 Creating Pointer to Arrays Example:     double (*f) [2]; Array elements of type double ( ) are REQUIRED Declares f to be a pointer Declares h to be a pointer One dimensional array of size 2 Example:     double (*h) [3] [5]; Two dimensional array of size 3 * 5                                             (15 elements) Lesson 11.6 typedef  Statement Used to create an alias for a data type – Note – not a new data type Basic form   typedef   type  synonym_1, synonym_n; Any valid data type List of valid identifiers         (any number) Lesson 11.6 Uses of  typedef Improve readability and understandability  of the code Easier to modify programs that are  implementation dependent Lesson 11.6 Arrays and  typedef 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 typedef for Pointer to Array 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 Returning a Pointer 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 array_ptr  function2 (argument); – Indicates pointer to 1­D array is returned from  function Lesson 11.6 Multidimensional Arrays C++ sees array of arrays 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 Can assign addresses with & operator  ( b = &a[0]; ) Lesson 11.6 Pointers to Objects Special  arrow operator     ­> – Negative and greater than symbol with no space  between – Used to access members with object's address Declaring  pointer    Class_name* ptr_name; Initializing pointer   ptr_name = &object_name; Calling member function (2 argument example)       ptr_name ­> function_name (arg1, arg2) Lesson 11.7 Pointers as Data Members General form Name of the class      class  Class_name      {              private:                     type*  pointer_name;              public: Name of member function                     type  function_name ( );       }; Any valid data type including  name of struct or class Lesson 11.8 Dynamic Memory Allocation 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 new  Operator General form:       new  type  [num_elements] – type is data type of array elements – num_elements is number of array elements Reserves memory but does NOT fill with  values – new returns address of memory it reserves          type*  array_address; – Value assigned to pointer variable of same type          array_address = new type [num];       Lesson 11.9 delete  Operator General form:       delete [ ]  array_address; – array_address is pointer variable Releases memory stored at address indicated Knows size of memory reserved by new and  releases memory for all the array delete  address;    – deletes memory for single element Lesson 11.9 Summary Learned how to: Declare and initialize pointer variables Pass addresses to functions Return an address from a function Reserve memory during execution Link classes with accessor functions ... Using a Pointer Variable Can be used to access a value Unary operator * used      * pointer_ variable – In executable statement, indicates value Common practice to use suffix ptr for  pointer variables. .. Can point to entire array – Holds address of beginning of array – Pointer declaration indicates size of memory  greater than single value Lesson 11.6 Creating Pointer to Arrays Example:     double (*f) [2];... Now a return statement with variable that indicates address in the function body                      return c; Lesson 11.5 Pointer Variables Point to 2, 4, or 8 bytes of memory  depending on type of variable Can point to entire array

Ngày đăng: 30/01/2020, 02:24

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan