User Tools

Site Tools


cplusplus:pointers_2

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
cplusplus:pointers_2 [2016/03/05 22:38] – [Pointers 2] mithatcplusplus:pointers_2 [2019/03/28 16:55] (current) mithat
Line 23: Line 23:
  
 <file cpp function-with-pointer.cpp> <file cpp function-with-pointer.cpp>
-/** Demostrates how to pass pointers to functions. */+/** Demonstrates how to pass pointers to functions. */
 #include <iostream> #include <iostream>
 using namespace std; using namespace std;
Line 54: Line 54:
 ===== Calling functions by reference ===== ===== Calling functions by reference =====
  
-Pointers can be used to implement //call-by-reference// in functions. The ''*'' operator is used to alias a variable inside of function.  +Pointers can be used to implement //passing by reference// in functions. The ''*'' operator is used to alias a variable inside of function.  
  
 <code cpp> <code cpp>
Line 63: Line 63:
 </code> </code>
  
-In the function above, ''*number'' is used as an alias for the variable passed in. Strictly speaking, the passing mechanism is //call-by-value// because the argument that is passed into the function (an address) is copied to the formal pointer parameter ''number''. However, dereferencing ''number'' acts as an alias to whatever is passed in.+In the function above, ''*number'' is used as an alias for the variable passed in. Strictly speaking, the passing mechanism is //pass by value// because the argument that is passed into the function (an address) is copied to the formal pointer parameter ''number''. However, dereferencing ''number'' acts as an alias to whatever is passed in.
  
  
 <file cpp cube-by-reference.cpp> <file cpp cube-by-reference.cpp>
-/** Cube a variable using call-by-reference with a pointer. */+/** Cube a variable using pass by reference with a pointer. */
 #include <iostream> #include <iostream>
 using namespace std; using namespace std;
Line 88: Line 88:
 </file> </file>
  
-<WRAP center round tip 90%> +<WRAP center tip 90%> 
-(and many other programmers) feel this is a much better way of implementing call by reference because the syntax in the function invocation (e.g., ''cubeByReference(&number))'' makes it clear that a pointer is involved---which is good tip off that call by reference is being used.+I feel pointers are much better than reference parameters for implementing pass by  reference because the syntax in the function invocation (e.g., ''cubeByReference(&number))'' makes it clear that a pointer is involved --- which is good indication that pass by  reference is being used.
 </WRAP> </WRAP>
  
Line 146: Line 146:
  
  
-<WRAP center round tip 90%> +<WRAP center tip 90%> 
-One way to remember this is "const modifies the thing immediately following it." In the case of:+One way to remember this is //"''const'' modifies the thing immediately following it."// 
 + 
 +In the case of:
 <code c++>int *const myPtr = &x;</code> <code c++>int *const myPtr = &x;</code>
-''const'' modifies ''myPtr'', meaning the value of ''myPtr'' is constant. In the case of:+''const'' modifies ''myPtr'', meaning the value of ''myPtr'' is constant. 
 + 
 +In the case of:
 <code c++>const int *myPtr = &x;</code> <code c++>const int *myPtr = &x;</code>
 ''const'' modifies ''int'', meaning the value of the ''int'' is constant. ''const'' modifies ''int'', meaning the value of the ''int'' is constant.
cplusplus/pointers_2.1457217511.txt.gz · Last modified: 2016/03/05 22:38 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki