Pointers
Addresses
The address-of operator & gives the memory location of a variable.
address-of
The expression `&value` produces a pointer to `value`.
Addresses
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;
}
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
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
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