// this code illustrates pointers to basic types #include #include using namespace std; void multiply_by_8(int *value_pointer); int main() { { // create a block for this code to separate it from the other float some_number = 1e30; float *pointer_to_some_number = &some_number; cout << "Enter divisor: "; float divisor; cin >> divisor; *pointer_to_some_number /= divisor; cout << "After dividing by " << divisor << ", some number is " << some_number << endl; cout << "Address of some_number: " << hex << int64_t(&some_number) << endl; cout << " ... and its pointer: " << hex << int64_t(pointer_to_some_number) << endl; } { // another block illustrating calling multiply_by_8 int value = 7; multiply_by_8(&value); cout << "7 times 8 = " << dec << value << endl; } return 0; } void multiply_by_8(int *value_pointer) { cout << "Value pointer's value: " << hex << int64_t(value_pointer) << endl; cout << "What value pointer points *at*, before multiplying: " << dec << *value_pointer << endl; // do it in two steps, just because value_pointer = *value_pointer * 2; // alternative way: *value_pointer = *value_pointer << 2; // multiply by 4 }