The address-of operator & gives the memory location of a variable.

address-of The expression `&value` produces a pointer to `value`.

Addresses

score
addresses.cpp
Replay: real traced execution (multi-file project)
#include <iostream>

int main() {
    int score = 42;
    int* scoreAddress = &score;
    bool sameAddress = scoreAddress == &score;

    std::cout << "score=" << score << std::endl;
    std::cout << "sameAddress=" << sameAddress << std::endl;
    std::cout << "pointedValue=" << *scoreAddress << std::endl;
    return 0;
}
#include <iostream>

int main() {
    int score = 30;
    int* scoreAddress = &score;
    bool sameAddress = scoreAddress == &score;

    std::cout << "score=" << score << std::endl;
    std::cout << "sameAddress=" << sameAddress << std::endl;
    std::cout << "pointedValue=" << *scoreAddress << std::endl;
    return 0;
}
#include <iostream>

int main() {
    int score = 75;
    int* scoreAddress = &score;
    bool sameAddress = scoreAddress == &score;

    std::cout << "score=" << score << std::endl;
    std::cout << "sameAddress=" << sameAddress << std::endl;
    std::cout << "pointedValue=" << *scoreAddress << std::endl;
    return 0;
}
  1. score ← 42, scoreAddress ← ⟨addr A⟩, sameAddress ← 1

    3int main() {4    int score→ 42 = 42; //@score=30, 755    int* scoreAddress→ ⟨addr A⟩ = &score42;6    bool sameAddress→ 1 = scoreAddress⟨addr A⟩ == &score42;78    std::cout << "score=" << score42 << std::endl;9    std::cout << "sameAddress=" << sameAddress1 << std::endl;10    std::cout << "pointedValue=" << *scoreAddress⟨addr A⟩ << std::endl;11    return 0;12}
    outputscore=42
    sameAddress=1
    pointedValue=42
  1. score ← 30, scoreAddress ← ⟨addr A⟩, sameAddress ← 1

    3int main() {4    int score→ 30 = 30;5    int* scoreAddress→ ⟨addr A⟩ = &score30;6    bool sameAddress→ 1 = scoreAddress⟨addr A⟩ == &score30;78    std::cout << "score=" << score30 << std::endl;9    std::cout << "sameAddress=" << sameAddress1 << std::endl;10    std::cout << "pointedValue=" << *scoreAddress⟨addr A⟩ << std::endl;11    return 0;12}
    outputscore=30
    sameAddress=1
    pointedValue=30
  1. score ← 75, scoreAddress ← ⟨addr A⟩, sameAddress ← 1

    3int main() {4    int score→ 75 = 75;5    int* scoreAddress→ ⟨addr A⟩ = &score75;6    bool sameAddress→ 1 = scoreAddress⟨addr A⟩ == &score75;78    std::cout << "score=" << score75 << std::endl;9    std::cout << "sameAddress=" << sameAddress1 << std::endl;10    std::cout << "pointedValue=" << *scoreAddress⟨addr A⟩ << std::endl;11    return 0;12}
    outputscore=75
    sameAddress=1
    pointedValue=75