#include using std::cout; struct Foo { Foo() : bar(1){} int bar; }; void print_foo(Foo); void print_foo_pointer(Foo*); int main(int argc, char** argv) { Foo a; Foo *b = new Foo(); Foo *c = nullptr; print_foo(a); print_foo_pointer(b); print_foo_pointer(c); } void print_foo(Foo to_print) { cout << to_print.bar << '\n'; } void print_foo_pointer(Foo* to_print) { cout << to_print->bar << '\n'; }