int g = 1;
void f(struct S s, int *pi);
struct S {
int *pi;
char c;
S() : c(‘\0’), pi(0) { }
S(int i,char _c) : c(_c)
{ pi = new int(i); }
S(const S& s) : c(s.c)
{ pi = new int(*s.pi); }
~S()
{ delete pi; }
};
void f(struct S s, int *pi)
{ s.c = 'z'; s.pi = pi; }
int main()
{
static int a = 2;
auto int b = 3;
S s(3,'x');
s.c = 'a';
s.pi = &g;
f(s, &g);
f(s, &a);
f(s, &b);
return 0;
}