Passing a pointer lets a function update the caller's object.

Pointer Parameters

pointer_parameters.cpp
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
#include <iostream>

void addBonus(int* score, int bonus) {
    if (score != nullptr) {
        *score += bonus;
    }
}

int main() {
    int score = ;
    int bonus = ;

    addBonus(&score, bonus);

    std::cout << "bonus=" << bonus << std::endl;
    std::cout << "score=" << score << std::endl;
    return 0;
}
pointer parameter A pointer parameter can be checked for `nullptr` and then dereferenced to update the target object.