User Tools

Site Tools


cplusplus:pointers_3_slides

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
cplusplus:pointers_3_slides [2019/03/31 21:26] mithatcplusplus:pointers_3_slides [2021/10/24 02:45] – [Pointer arithmetic: subtraction] mithat
Line 6: Line 6:
 Pointers, arrays, arithmetic.\\ Pointers, arrays, arithmetic.\\
 Mithat Konar\\ Mithat Konar\\
-March 312019+October 232021
  
 ===== Pointers and arrays ===== ===== Pointers and arrays =====
  
   * Arrays and pointers are closely related.   * Arrays and pointers are closely related.
-  * An array name is like a constant pointer:+  * Array names are like a constant pointers:
     * the block of memory where an array name points cannot be changed,     * the block of memory where an array name points cannot be changed,
     * what is stored there can change.     * what is stored there can change.
Line 51: Line 51:
 ===== Pointer arithmetic ===== ===== Pointer arithmetic =====
  
-  * You perform arithmetic on pointer variables +  * Pointer arithmetic works differently than normal arithmetic.
-  * Pointer arithmetic works differently from normal arithmetic!+
   * ''+'',  ''+='', ''-'', ''-='', ''++'', ''--'' do math in terms of the size of the pointed data type.   * ''+'',  ''+='', ''-'', ''-='', ''++'', ''--'' do math in terms of the size of the pointed data type.
   * E.g., adding 1 to a pointer makes it point to the next block of memory corresponding to the size of the underlying type.   * E.g., adding 1 to a pointer makes it point to the next block of memory corresponding to the size of the underlying type.
 +
 +===== Pointer arithmetic: addition =====
 +  * Adding 1 to a pointer makes it point to the next block of memory corresponding to the size of the underlying type.
 +
  
 <file cpp pointer-math.cpp> <file cpp pointer-math.cpp>
Line 78: Line 81:
 } }
 </file> </file>
 +
 +===== Pointer arithmetic: pointer difference =====
  
 Subtracting one pointer from another returns the number of elements between two addresses: Subtracting one pointer from another returns the number of elements between two addresses:
Line 98: Line 103:
 </file> </file>
  
-==== Walking down an array ====+===== Walking down an array =====
  
 A common technique used to visit every element in an array is to //walk down an array// with a pointer: A common technique used to visit every element in an array is to //walk down an array// with a pointer:
Line 122: Line 127:
 </file> </file>
  
-This is especially common with zero-terminated (i.e., NULL terminated) partially-filled arrays:+Especially common with zero-terminated (i.e., NULL terminated) partially-filled arrays:
  
 <file cpp walk-null-terminated.cpp> <file cpp walk-null-terminated.cpp>
Line 146: Line 151:
 ===== Summary ===== ===== Summary =====
  
-The examples below assume:+The following examples below assume:
  
 <code cpp> <code cpp>
Line 153: Line 158:
 </code> </code>
  
-==== Array access techniques ====+===== Array access techniques =====
  
 ^ Access technique                               ^ Example                         ^ ^ Access technique                               ^ Example                         ^
Line 162: Line 167:
  
  
-==== Array arithmetic ==== +===== Array arithmetic =====
  
 ^ Operation                                                        ^ Example ^ ^ Operation                                                        ^ Example ^
-|Increment <code>pointer++</code>                                          |<code cpp>valptr++;  // points at 7</code>+|<code>pointer++</code>                                          |<code cpp>valptr++;  // points at 7</code>
-|Decrement <code>pointer--</code>                                          |<code cpp>valptr--;  // now points at 4</code>+|<code>pointer--</code>                                          |<code cpp>valptr--;  // now points at 4</code>
-|Arithmetic <code>pointer + int</code> and <code>pointer - int</code> |<code cpp>cout << *(valptr + 2); // prints 11</code>+|<code>pointer + int</code>                                      |<code cpp>cout << *(valptr + 2); // prints 11</code>
-|Compound assignment <code>pointer += int</code>and<code>pointer -= int</code> |<code cpp>valptr = vals; // points at 4+|<code>pointer += int</code>                                     |<code cpp>valptr = vals; // points at 4
 valptr += 2;   // points at 11</code> | valptr += 2;   // points at 11</code> |
-|Pointer subtraction <code>pointer - pointer</code>                                |<code cpp>cout << valptr - val; // # of ints between valptr and val</code> |+|<code>pointer - pointer</code>                                  |<code cpp>cout << valptr - vals; // # of ints between valptr and vals</code> |
  
cplusplus/pointers_3_slides.txt · Last modified: 2021/10/24 02:46 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki