声明指针类,如何在调用函数时传入地址参数?

请问当声明方式为Building *b时,如何往函数中传地址参数?

class Building
{
    friend void goodgay(Building *building);
public:
    string m_s;
    Building()
    {
        this->m_s = "客厅";
        this->m_b = "卧室";
    }
private:
    string m_b;
};
void goodgay(Building *builiding)
{
    cout << builiding->m_b;
}
void fun1()/
{
    Building b;
    goodgay(&b)
} 
void fun2()
{
     Building *b;
     goodgay(b);//这里编译未出错,但是运行报错,请问该如何写。
}
void fun3()
{
    Building *b;
    goodgay(&*b);//这里编译未出错,但是运行报错,请问该如何写。
}
int main() 
{
    fun1();
    //fun2();    fun2运行后报错  。
    //fun3();    fun3运行后报错。
    return 0;
    
    
}

void fun2()
{
     Building *b = new Building();
     goodgay(b);
}
fun3是一样的,指针必须先分配空间才行